Rails 4 - in_time_zone意外的行为

问题描述:

我正在使用Rails 4试图与in_time_zone助手一起工作,并且无法理解奇怪的行为。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