2014-11-21 35 views
0

在我的Rails應用我做了以下內容:爲什麼Time.now返回PST如果我的TIme.zone是UTC?

Time.zone.name #=> 'UTC' 

爲什麼當我這樣做:

Time.parse('2014-12-19').end_of_day.to_datetime 

我得到:Fri, 19 Dec 2014 23:59:59 -0800

當我做:

Time.use_zone('Pacific Time (US & Canada)') { Time.parse('2014-12-19').end_of_day.to_datetime } 

我得到完全一樣的東西:Fri, 19 Dec 2014 23:59:59 -0800

爲什麼該區域未被應用?

回答

0

您是否在尋找這個

Time.use_zone('Pacific Time (US & Canada)') { Time.parse('2014-12-19').end_of_day.to_datetime.in_time_zone}

這會給你正確的時區。欲瞭解更多信息,請看THIS SO QUESTION

2

您需要使用Time.zone.parse才能使用正確的時區。

2.1.3 (main):0 > Time.zone.name 
=> "UTC" 
2.1.3 (main):0 > Time.zone.parse('2014-12-19').end_of_day.to_datetime 
=> Fri, 19 Dec 2014 23:59:59 +0000 
0

你可能是在Windows上,它有一個在Rails和Rails中的bug會一直返回你當地的時區。見How does Rails know my timezone?

您還可以使用

zone = ActiveSupport::TimeZone['Hawaii'] 
zone.at(Time.now) 
=> Tue, 16 Jun 2015 09:22:53 HST -10:00 

但是我比較喜歡Pamio的想法

Time.now.in_time_zone('Hawaii') 
=> Tue, 16 Jun 2015 09:43:17 HST -10:00 
相關問題