在Rails中,我有来自外部源的时间戳,我无法控制:
2017-01-06 16:57:05 UTC
注意:此时间戳中没有时区偏移量。
我在application.rb
config.time_zone = 'Central Time (US & Canada)'
当我在生产日志中使用简单puts
打印时,我得到:
2017-01-06 10:57:05 +0000
注意:如果我通过DateTime.parse(), Time.zone.parse(), or ActiveSupport::TimeZone.new('UTC').parse()
对此时间戳进行任何解析,我将会休息6小时。
应该是:
2017-01-06 10:57:05 -0600
注意:查看正确的时区偏移量
因此,Rails已将中心时间的-0600
偏移量应用于原始时间戳。换句话说,由于原始时间戳2017-01-06 16:57:05 UTC
没有提供时区偏移量,因此Rails已将其转换为中心时间2017-01-06 10:57:05 +0000
,应该是2017-01-06 10:57:05 -0600
如何防止这种情况?
到目前为止,我已经提出:
Time.zone.parse(my_time.to_s) - Time.zone.utc_offset
但这似乎很脆弱。