因此,现在是旧金山太平洋标准时间下午2点54分。由于某些原因,这个代码块并没有在夏威夷时间12:54 PM返回HST。我在这里错过了什么吗?我希望这段代码能够在夏威夷返回当前时间Time.use_zone未按预期工作
Time.use_zone('Hawaii') do
Time.now
end
# => 2012-01-03 14:54:54 -0800
因此,现在是旧金山太平洋标准时间下午2点54分。由于某些原因,这个代码块并没有在夏威夷时间12:54 PM返回HST。我在这里错过了什么吗?我希望这段代码能够在夏威夷返回当前时间Time.use_zone未按预期工作
Time.use_zone('Hawaii') do
Time.now
end
# => 2012-01-03 14:54:54 -0800
这应该可以工作:
Time.use_zone('Hawaii') do
p Time.zone.now
end
尝试在代码块中使用Time.now.in_time_zone
。
> Time.use_zone('Hawaii') do
> Time.now.in_time_zone
> end
=> Tue, 03 Jan 2012 13:07:06 HST -10:00
Time.now - 使用服务器时间
Time.zone.now - 使用Rails应用程序的时间(在配置:config.time_zone)
时间。 use_zone - 用“你的”时区的给定块
这个例子是错误的,因为Time.now在SERV获取时间呃时区以及方法in_time_zone将时间转换为夏威夷时区的同等时间。但目前在夏威夷没有时间!这是您的服务器时间与夏威夷utc抵消。
Time.use_zone('Hawaii') do
Time.now.in_time_zone
end
=> Wed, 14 Aug 2013 10:33:18 HST -10:00
Time.now.in_time_zone
=> Thu, 15 Aug 2013 00:32:30 MSK +04:00
为了得到时间在夏威夷时区,如果你想与now
支持时区必须使用
Time.use_zone('Hawaii') do
Time.zone.now
end
使用Time.current
。 Time.now
在具有时区意识的应用程序中工作时很危险,根据经验,我从不使用Time.now
,只有Time.current
。像2.hours.ago
和4.days.from_now
这样的Rails时间助手也是基于Time.current
。
此外,这是一篇很棒的文章,底部有一个很好的备忘单:http://www.elabs.se/blog/36-working-with-time-zones-in-ruby-on-rails