ruby-on-rails - 时区困惑(1小时)

标签 ruby-on-rails ruby ruby-on-rails-3 time timezone

Time.use_zone('Pacific Time (US & Canada)') do
  p Time.zone.now
end 

我得到以下信息:=> Sun, 14 Apr 2013 20:30:53 PDT -07:00

然而,当我执行 Rails Time Zone Select.... 它说 -8:00 非常清楚。为什么一个区域是-7,另一个区域是-8?

其他时间,夏威夷 等时区 -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 >

注意结果与 where 子句的差异。

编辑

它似乎适用于 CST,但 PST 关闭了约 1 小时?我觉得这都是同一个问题,我只是漏掉了一 block 拼图。

最佳答案

输出是正确的。太平洋夏令时的偏移量为 -7,而太平洋标准时间的偏移量为 -8。我的猜测是“Rails Time Zone Select”(无论是什么)只是向您显示“标准”偏移量,而不是当前偏移量。这在时区选择器中很常见。

夏威夷不实现任何形式的夏令时,因此这解决了您的第二点。

关于你的第三点,我必须更多地了解你的数据库平台才能回答为什么将值转换为 UTC。鉴于这些是事件时间,我会说它们应该采用 UTC。它们也可以在“聚会”地点的时区内,但前提是还存储了与 UTC 的偏移量。但他们永远不应该在服务器的时区内。

关于您的第四点,如果没有更多细节,很难说清您的意思。如果您觉得有必要,请展开。

关于ruby-on-rails - 时区困惑(1小时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16161178/

相关文章:

ruby-on-rails-3 - 如果失败则恢复 Mongoid

mysql - Rails - 在文本列中插入超过 7786 个字符时获取 'Mysql server has gone away'

ruby-on-rails - ruby rails : Deleting multiple attachments in paperclip on updates

ruby - 将实例方法委托(delegate)给类方法

ruby - Ruby 中的序列

ruby - 在 Shell 脚本上运行 .rb (Ruby) 文件

ruby-on-rails - Airbrake 和 Spree 商业 API : undefined method `airbrake_request_data`

ruby-on-rails - Ruby - 如何访问模块的方法?

jquery日期选择器分为多个字段

ruby-on-rails - 我的 Postgres 端口文件应该是什么样的?