ActiveSupport::TimeZone.new("Pacific Time (US & Canada)")
=> (GMT-08:00) Pacific Time (US & Canada)
...但是现在,在洛杉矶它是格林尼治标准时间-07:00因为夏令时。见http://www.timeanddate.com/worldclock/city.html?n=137
这是一个错误,我的设置中的错误,还是我不正确地创建了TimeZone对象?似乎无法弄清楚
答案 0 :(得分:3)
想出来。结果是TimeZone对象 有一个'now'的概念:
tz = ActiveSupport::TimeZone.new("Pacific Time (US & Canada)")
=> (GMT-08:00) Pacific Time (US & Canada)
tz.parse('8:00AM')
=> Fri, 12 Oct 2012 08:00:00 PDT -07:00
所以你仍然可以使用TimeZone创建具有适当偏移量的TimeWithZone对象 - 尽管它的to_s方法显示不正确的偏移量。
答案 1 :(得分:1)
我不相信ActiveSupport::TimeZone
个对象有“现在”的概念。您可以使用::create
以所需的utc_offset初始化TimeZone:
ActiveSupport::TimeZone.create("Pacific Time (US & Canada)", -(60 * 60 * 7))
# => (GMT-07:00) Pacific Time (US & Canada)
在处理ActiveSupport::TimeWithZone
对象时,现在与夏令时相关的概念更有意义。通过在application.rb中设置时区来了解Rails应用程序时区:
config.time_zone = 'Pacific Time (US & Canada)'
...并且您使用Time.zone.now
,结果将考虑夏令时GMT-07:00。所以在这篇文章发表时:
Time.zone.now
=> Fri, 12 Oct 2012 07:03:51 PDT -07:00
Time.zone.now.class
=> ActiveSupport::TimeWithZone