2014-11-21 30 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 
相关问题