我正在使用 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
但是,在我的生产网站上,它返回的时间不正确。
"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
关于ruby-on-rails - Rails 4 - in_time_zone 意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40985509/