Rails 4 - in_time_zone 意外行为
Rails 4 - in_time_zone unexpected behavior
我正在使用 Rails 4 尝试与 in_time_zone 助手一起工作,但无法理解这种奇怪的行为。
在本地主机(或从控制台)将我的时间戳转换为 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
但是,在我的生产网站上,returns 时间不正确。
"2016-12-05 10:00 pm".to_time.in_time_zone("UTC)
=> 2016-12-05 22:00:00 UTC # this is incorrect
不确定这怎么可能.. UTC 无论如何都应该是 UTC。任何有助于理解为什么会发生这种情况的帮助都会很棒。
您需要告诉软件您要从从转换哪个时区,而不仅仅是到。由于您不这样做,它假定它应该从系统时间转换为 UTC。碰巧的是,您的生产服务器上的系统时钟似乎 已经 为 UTC,因此它根本不会更改时间。
因为你似乎是在 UTC-7,我猜你在美国西海岸,所以你可以使用这样的代码:
ActiveSupport::TimeZone['America/Los_Angeles'].parse("2016-12-05 10:00 pm").utc
我正在使用 Rails 4 尝试与 in_time_zone 助手一起工作,但无法理解这种奇怪的行为。
在本地主机(或从控制台)将我的时间戳转换为 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
但是,在我的生产网站上,returns 时间不正确。
"2016-12-05 10:00 pm".to_time.in_time_zone("UTC)
=> 2016-12-05 22:00:00 UTC # this is incorrect
不确定这怎么可能.. UTC 无论如何都应该是 UTC。任何有助于理解为什么会发生这种情况的帮助都会很棒。
您需要告诉软件您要从从转换哪个时区,而不仅仅是到。由于您不这样做,它假定它应该从系统时间转换为 UTC。碰巧的是,您的生产服务器上的系统时钟似乎 已经 为 UTC,因此它根本不会更改时间。
因为你似乎是在 UTC-7,我猜你在美国西海岸,所以你可以使用这样的代码:
ActiveSupport::TimeZone['America/Los_Angeles'].parse("2016-12-05 10:00 pm").utc