st0*_*0rk 6 ruby time timezone ruby-on-rails ruby-on-rails-3
Time.use_zone('Pacific Time (US & Canada)') do
p Time.zone.now
end
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:=> Sun, 14 Apr 2013 20:30:53 PDT -07:00
然而,当我执行 Rails Time Zone Select 时...它说-8:00得很清楚。为什么一个区域的值为-7,而另一区域的值为-8?
其他时候,像Hawaii这样的时区-10:00不会偏移一个小时。
我认为这与夏令时有关,但我更好奇这是否意味着它工作正常或不正确,并且我还需要做其他事情。
最终我在日期选择器中使用它,我发现很奇怪的是,当我使用Time.zone.parse(以及过滤器周围的时区)时,它会将所有内容抵消 1 小时。
谢谢
编辑
这是我刚刚在另一段代码中遇到的类似问题
2.0.0-p0 :006 >
2.0.0-p0 :006 > u.meetups.in_future.first.meetup_time
Meetup Load (0.4ms) SELECT `meetups`.* FROM `meetups` WHERE `meetups`.`user_id` = 1 AND (meetup_time >= '2013-04-23 04:46:48') ORDER BY meetup_time ASC LIMIT 1
=> Tue, 23 Apr 2013 05:43:00 UTC 00:00
2.0.0-p0 :007 >
Run Code Online (Sandbox Code Playgroud)
请注意结果与 where 子句相比的差异。
编辑
它似乎适用于 CST,但 PST 相差约 1 小时?我觉得这都是同一个问题,我只是缺少一块拼图。
输出是正确的。太平洋夏令时的偏移量为 -7,而太平洋标准时间的偏移量为 -8。我的猜测是“Rails 时区选择”(无论是什么)只是向您显示“标准”偏移量,而不是当前的偏移量。这在时区选择器中很常见。
夏威夷不实行任何形式的夏令时,因此这解决了您的第二点。
关于你的第三点,我必须更多地了解你的数据库平台才能回答为什么这些值转换为 UTC。鉴于这些是事件时间,我想说它们应该是 UTC。它们也可能位于“聚会”地点的时区,但前提是还存储了与 UTC 的偏移量。但它们永远不应该位于服务器的时区。
关于你的第四点,如果没有更多细节,很难说出你的意思。如果您觉得有必要,请扩展。
| 归档时间: |
|
| 查看次数: |
798 次 |
| 最近记录: |