Ruby时间戳可靠地转换为UTC

时间:2015-01-03 04:57:31

标签: timestamp ruby-2.1

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

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

谷歌告诉我CST比UTC晚了6个小时,所以在转换到UTC后我预计时间是2014-12-31 11:00 PM 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

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

1 个答案:

答案 0 :(得分:0)

我倒退了! UTC是CST的AHEAD,因此当CST转换为UTC时,6小时将被添加到CST时间!!

Ruby正确地做到了。

因此,上午5点CST =上午11点UTC。 下午5点CST =晚上11点UTC。

如果我测试11 PM CST,则会出现白天的差异:

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

打印

2015-01-02 05:00:00 UTC

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