在我的Rails应用程序中,我执行以下操作:
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 :(得分: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
答案 1 :(得分: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 :(得分:0)
你可能在Windows上,它在Rails中有一个错误,Rails总会返回你的本地时区。见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