在Ruby中转换纪元时间(长字符串)

时间:2018-03-08 06:55:56

标签: ruby

领先3个零的大纪元时间将返回无效年份。

Time.at(1520486517000).to_datetime
 => Wed, 19 Apr 50152 19:20:00 +0530 

删除结束3个零后,它返回并生成有效时间戳。

Time.at(1520486517).utc.to_datetime
=> Thu, 08 Mar 2018 05:21:57 +0000 

当输入有冗长的纪元数字时,红宝石有没有办法将纪元时间转换为有效的时间戳?

2 个答案:

答案 0 :(得分:3)

使用DateTime#strptime"%Q"格式化程序来解析毫秒数。

require 'date'
DateTime.strptime 1520486517000.to_s, '%Q'
#⇒ #<DateTime: 2018-03-08T05:21:57+00:00 ((2458186j,19317s,0n),+0s,2299161j)>

答案 1 :(得分:-1)

我找到了以下处理长时间戳的方法。

https://www.ruby-forum.com/topic/85822

Time.at(1520486517000/1000).utc.to_datetime
 => Thu, 08 Mar 2018 05:21:57 +0000