Tag: timezone

如何使用javascript以railsforms获取本地时间?

我正在使用local_time gem在用户本地时间显示日期,它适用于已添加的日期,以便在我当地时间显示它们。 我在添加新日期时遇到问题,我试图通过HTML表单传递用户本地时间(以及日期)。 我认为客户端设备有本地时间,所以我需要抓住它。 现在我正在尝试在表单中添加一个字段,如: = simple_form_for(@link)do |f| … = f.text_field :local_client_time, value: local_time(“#{Time.now()}”) 但那显示出来了 August 11, 2014 12:12pm” /> 这不仅是形成错误并且实际显示(应该隐藏),而且还显示了一个时间,比我在EST上的浏览器时间提前5小时。 如何在表单上传递用户本地时间? (可能是js)? 我也不确定如何在控制器上处理它。 我现在有 @link = Link.new(params[:link]) 以及之后的其他一些逻辑。 我不确定如何在创建Active Record实例时让rails处理这个额外的参数(它会忽略它吗?)而且我也不知道如何使用通过隐藏字段传入的local_client_time,如同rails可用于实际设置日期字段verified_date的值的日期格式 注意:我需要为所有用户显示该字段,无论是否登录,但对于local_time gem来说似乎没问题。 唯一的问题似乎是添加一个具有时间组件的日期字段。 美国东部时间晚上8点后,它会在第二天添加,然后显示屏会反映出来。 另一个字段(’content_date’)没有这些问题但是对于该字段我只使用f.text_field :content_date, id: ‘datepicker’, size: 10并且控制器中没有特殊处理,数据库中没有日期字段。 两个日期字段看起来类似: | content_date | date | YES | | NULL | | | verified_date […]

rails’utc_to_local和夏令时

> e = Event.first > e.registration_start_utc #registration_start_utc is a datetime column => Sat, 23 Oct 2010 06:38:00 UTC +00:00 > e.registration_start_utc.utc? => true > ActiveSupport::TimeZone.find_tzinfo(“America/New_York”).utc_to_local(e.registration_start_utc) => Sat, 23 Oct 2010 02:38:00 UTC +00:00 关于这个的2个问题: 1)为什么最后一个输出显示“UTC” – 小时被转换(6 => 2)但它仍然表示UTC。 为什么不EST / EDT? 2)夏令时转换后纽约的偏移量从-4变为-5后会发生什么? 数据库中的值没有变化所以我唯一的结论是我的应用程序将开始显示“1:38”到处而不是正确的2:38? 我最关心的是#2。 #1更像是一种好奇心。 谢谢!

RoR Postgresql时区组不在Heroku上工作

我希望我的报告在CST中显示,而我的数据库是UTC。 为此,我需要能够按时间列进行分组并让db进行时区转换。 这适用于我的dev postgresql框: offset = -5 result = ActiveRecord::Base.connection.execute(“select date(srl.created_at AT TIME ZONE ‘#{offset.to_s}’) AS date, count(*) from server_request_logs srl where srl.created_at between ‘#{@from.to_s(:db)}’ and ‘#{@to.to_s(:db)}’ group by date(srl.created_at AT TIME ZONE ‘#{offset.to_s}’)”) 在heroku上它出错了: ActiveRecord::StatementInvalid: PGError: ERROR: time zone “-5” not recognized 它也没有使用像’America / Winnipeg’这样的TZInfo名称或者来自http://www.postgresql.org/docs/7.2/static/timezones.html的 ‘CST’支持的时区。 有没有人能够使这个工作?

两个ActiveSupport :: TimeWithZone对象之间的比较失败

在我的测试套件中,我有一个失败的测试。 expected[0][‘date’]来自SomeModel.first.created_at 在调试控制台中,我有以下内容: > expected[0][‘date’] => Tue, 25 Mar 2014 16:01:45 UTC +00:00 > res[0][‘date’] => Tue, 25 Mar 2014 16:01:45 UTC +00:00 > res[0][‘date’] == expected[0][‘date’] => false # wtf > res[0][‘date’].class => ActiveSupport::TimeWithZone > expected[0][‘date’].class => ActiveSupport::TimeWithZone > 这怎么可能 ? 我试图重现这个问题(我想也许在TimeWithZone上的==运算符检查引用,或类似的东西,但没有……): > t1 = Time.zone.at(0) => Thu, 01 Jan 1970 00:00:00 UTC +00:00 […]

使用搜索逻辑的日期条件

Rails插件 – 来自二进制逻辑的Searchlogic – 提供按日期过滤的function。 我的表单设置如此…… 但是,我从控制器中生成的@search对象返回的日期… @search = Task.with_member(current_user).search(params[:search]) 生成一个看起来像这样的日期参数 {:due_at_after=>Sat, 31 Oct 2009 20:00:00 EDT -04:00} 使用这两种格式,表单不会显示所选的下拉列表。 看起来searchlogic对象中的格式也使用了时区调整时间。 有关如何处理这个的任何想法?

生产和开发之间的奇怪时间不一致

出于某种原因,时间在开发(我的本地Mac)和生产(Heroku)中的表现不同。 看一下:(就在这之前我做了一个heroku db:pull ,所以数据库应该是相同的) 制作(Heroku) >> Annotation.last.id => 2028 >> Annotation.last.created_at => Sat, 12 Sep 2009 06:51:33 UTC +00:00 >> Time.zone => #<ActiveSupport::TimeZone:0x2b4972a4e2f0 @tzinfo=#, @utc_offset=0, @name=”UTC”> >> Time.now.zone => “PDT” 开发(我的Macbook Pro) >> Annotation.last.id => 2028 >> Annotation.last.created_at => Sat, 12 Sep 2009 09:51:33 UTC +00:00 >> Time.zone => #<ActiveSupport::TimeZone:0x23c92c0 @tzinfo=#, @utc_offset=0, @name=”UTC”> >> Time.now.zone […]

Rails:如何在postgres上创建带时区的时间列

我有一个适用于postgres db的rails应用程序。 我有一个名为UserTimings的模型,其中有两个字段from_time和to_time。 t.time “from_time” t.time “to_time” 我预计时间将以完整的UTC格式存储,并带有时区信息。 过了一会儿,我意识到数据库有这种SQL查询来创建表。 from_time time without time zone, to_time time without time zone, 我不想要这个。 我想存放时区 。 我希望在UTC时间里有+0530的东西,我还没想到rails应用程序已被配置为处理它。 请告诉我如何编写迁移以强制数据库使用时区。 谢谢。

如何将TZInfo标识符转换为Rails TimeZone名称/密钥

如何将作为TZInfo标识符接收的js值转换为Rails TimeZone名称/密钥? FROM: “America/New_York”从JavaScript TZinfo检测返回 TO:Rails TimeZone中使用的”Eastern Time (US & Canada)”惯例 或者另一个例子: “Pacific/Honolulu” =>转换为=> “Hawaii” 两者都可以在ActiveSupport::TimeZone < Object mapping中使用,但rails在下拉,validation和存储到Time.use_zone()使用密钥[ig “Eastern Time (US & Canada)” ]。 基于我对ActiveSupport::TimeZone.us_zones理解,这似乎很重要,尤其是DayLights节省时间(轨道声音可以很好地处理),并且只能匹配偏移量。 如果没有使用rails TimeZone名称存储到DB,则validation失败并且在用户的配置文件设置页面中与ActiveSupport::TimeZone.zones_map的下拉列表无法正确匹配 这样做的目的是用户不必在注册时选择他们的时区,或者在注册后需要在他们的设置中更改它们。 浏览器检测到它并在注册时将其传递给hidden_​​field。 在极少数情况下,他们在与家庭/工作不同的地方注册。 他们可以稍后在其帐户设置中手动覆盖。 在尝试摄取js时区检测时似乎是一个常见的差距。 这甚至可能成为如何将返回的信息从js传递给rails进行转换然后返回js以存储回表单的hidden_​​field的次要问题? 希望我正确地解决了这个问题,并且确实有一些带有rails的绿色,所以可能有一个简单的解决方案…… 非常感谢所有的帮助! -E ActiveSupport Time.zone文档 http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html#method-i-parse MAPPING = {“Eastern Time (US & Canada)” => “America/New_York” 使用js打包gem’temporal-rails’来检测用户时区: https://github.com/jejacks0n/temporal 用户Time_Zone实现如下所示: http://railscasts.com/episodes/106-time-zones-revised *使用设计和设计 – […]

Rails BST时区实现

有谁知道如何在我的rails config / environment.rb文件中使用BST for config.time_zone? 目前我已将其保留为UTC,我正在考虑将BST添加到支持的时区列表中,然后扩展Time类以尊重这一点(> X月的最后一个星期日+ 1小时) 我在哪里可以找到支持的时区列表? 在我周围搜索我发现了很多抱怨,但没有很多答案。 这将在guthub asap。 干杯,Dougle

为什么这个rails查询的行为取决于时区?

我有一个基于时间的rails查询,它有一些奇怪的时区敏感行为,即使据我所知我使用的是UTC。 简而言之,这些查询给出了不同的答案: >> Model.find(:all,:conditions=>[‘created_at 279 >> Model.find(:all,:conditions=>[‘created_at 280 DB实际上包含在过去一小时内创建的一个模型,并且模型总数为280.因此只有第一个查询是正确的。 但是,在environment.rb中,我有: config.time_zone = ‘UTC’ 系统时区(由“日期”报告)是BST(GMT + 1) – 因此不知何故,这会被视为UTC并打破查询。 这引起了我各种各样的问题,因为我需要将在不同时间传递的查询参数化为一个动作(然后使用Time.parse()进行转换),即使我以UTC时间发送,这个’关闭一小时’DST问题很多。 即使使用’.gmtime()’也似乎并不总能修复它。 显然,这种差异是由某个地方的隐式转换造成的,导致BST被错误地视为UTC,但为什么呢? rails是否以UTC格式存储时间戳? Time class timezone不是很清楚吗? 我正在使用Rails 2.2.2 那么这里发生了什么 – 围绕它编程的安全方法是什么? 编辑,一些额外的信息来显示DB和Time类正在做什么: >> Model.find(:last).created_at => Tue, 11 Aug 2009 20:31:07 UTC +00:00 >> Time.now => Tue Aug 11 22:00:18 +0100 2009 >> Time.now.gmtime => Tue Aug […]