【问题标题】:Ruby Timestamp Reliably Convert To UTCRuby 时间戳可靠地转换为 UTC
【发布时间】:2015-03-01 08:36:21
【问题描述】:

我正在编写一个 Ruby 脚本。它需要接受用户的时间戳,然后使用它进行一些数据库查询。 据我所知,数据库以 UTC 格式存储时间戳。

我想让用户按以下格式指定时间:2015-01-01 05:00 AM CST

根据 Google 告诉我的 CST 比 UTC 晚 6 小时,因此在转换为 UTC 后,我预计时间是 2014 年 12 月 31 日晚上 11:00 UTC。

但这不是我看到的。

Time.strptime('2015-01-01 05:00 AM CST', '%Y-%m-%d %I:%M %P %Z').utc

打印

2015-01-01 11:00:00 UTC

它不应该打印 2014-12-31 11:00 PM UTC 吗?

Time.strptime('2015-01-01 05:00 PM CST', '%Y-%m-%d %I:%M %Z').utc

打印

2015-01-01 11:00:00 UTC

从上午到下午的变化似乎没有任何区别,怎么可能?

【问题讨论】:

    标签: timestamp ruby-2.1


    【解决方案1】:

    我倒过来了! UTC 领先于 CST,因此当 CST 转换为 UTC 时,CST 时间将增加 6 小时!!

    Ruby 做得对。

    因此,美国中部标准时间上午 5 点 = 世界标准时间上午 11 点。 中部标准时间下午 5 点 = 世界标准时间晚上 11 点。

    如果我在美国中部标准时间晚上 11 点进行测试,则会出现日期差异:

    Time.strptime('2015-01-01 11:00 PM CST', '%Y-%m-%d %I:%M %P %Z').utc

    打印

    2015-01-02 05:00:00 UTC

    那就是它正确地增加了一天。

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 2019-01-05
      • 2013-03-23
      • 1970-01-01
      • 2015-04-20
      • 2011-02-06
      相关资源
      最近更新 更多