Rails 4 - in_time_zone意外行为

时间:2016-12-05 23:54:39

标签: ruby-on-rails ruby ruby-on-rails-4 timezone utc

我正在使用Rails 4尝试使用in_time_zone帮助程序,并且无法理解奇怪的行为。

在localhost(或从控制台)将我的时间戳转换为UTC时,一切都按预期工作:

"2016-12-05 10:00 pm".to_time.in_time_zone("UTC)
=> 2016-12-06 05:00:00 UTC # this is the correct utc time

但是,在我的生产网站上,它返回的时间不正确。

"2016-12-05 10:00 pm".to_time.in_time_zone("UTC)
=> 2016-12-05 22:00:00 UTC # this is incorrect 

不确定这是怎么可能的.. UTC应该是UTC,无论如何。任何帮助理解为什么会发生这种情况会很棒。

1 个答案:

答案 0 :(得分:4)

您需要告诉软件您从转换的时区,而不仅仅是。由于您没有,它假定它应该从系统时间转换为UTC。实际上,生产服务器上的系统时钟似乎已经已经在UTC中,所以它根本不会改变时间。

由于你似乎是在UTC-7,我猜你在美国的西海岸,所以你可能会使用这样的代码:

ActiveSupport::TimeZone['America/Los_Angeles'].parse("2016-12-05 10:00 pm").utc