因此,現在是舊金山太平洋標準時間下午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