正确的解析时间戳的方法没有时区偏移量:2017-01-06 16:57:05 UTC

时间:2017-01-24 20:34:39

标签: ruby-on-rails ruby

  1. 在Rails中,我有来自外部源的时间戳,我无法控制:

    2017-01-06 16:57:05 UTC
    

    注意:此时间戳中没有时区偏移量。

  2. 我在application.rb

    中有以下内容
    config.time_zone = 'Central Time (US & Canada)'
    
  3. 当我在生产日志中使用简单puts打印时,我得到:

    2017-01-06 10:57:05 +0000
    

    注意:如果我通过DateTime.parse(), Time.zone.parse(), or ActiveSupport::TimeZone.new('UTC').parse()对此时间戳进行任何解析,我将会休息6小时。

  4. 应该是:

    2017-01-06 10:57:05 -0600
    

    注意:查看正确的时区偏移量

  5. 因此,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
    

    但这似乎很脆弱。

0 个答案:

没有答案