den*_*iss 17 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
所以现在是旧金山太平洋标准时间下午2:54.出于某种原因,此代码块未在夏威夷12:54 PM HST返回.我在这里错过了什么吗?我希望这段代码能让我回到夏威夷的当前时间
Time.use_zone('Hawaii') do
Time.now
end
# => 2012-01-03 14:54:54 -0800
Run Code Online (Sandbox Code Playgroud)
Mar*_*oda 28
这应该工作正常:
Time.use_zone('Hawaii') do
p Time.zone.now
end
Run Code Online (Sandbox Code Playgroud)
请尝试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
Run Code Online (Sandbox Code Playgroud)
使用Time.current
,如果你想now
用的时区支持.Time.now
在一个时区感知应用程序时,根据经验我从来没有使用的规则是危险的Time.now
,唯一的Time.current
.Rails时间帮助者也喜欢2.hours.ago
和4.days.from_now
基于Time.current
它们.
此外,这是一篇很棒的文章,底部有一个很好的备忘单:http://www.elabs.se/blog/36-working-with-time-zones-in-ruby-on-rails
Time.now - 使用服务器时间
Time.zone.now - 使用 Rails 应用程序时间(在配置中:config.time_zone)
Time.use_zone - 使用给定块的“您的”时区
这个例子是错误的,因为 Time.now 获取服务器时区的时间,并使用 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
Run Code Online (Sandbox Code Playgroud)
要获得夏威夷时区的时间,您必须使用
Time.use_zone('Hawaii') do
Time.zone.now
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9800 次 |
最近记录: |