由于13位的时间戳在Ruby中是比较另类的,以为Ruby中默认的时间戳都是10位的。而Time和Date是Ruby中常用的处理时间的模块。

由于最初遇到问题的时候网上搜了好久都没找到合适的,因此就自己写一下,帮助下再次遇到这个问题的小伙伴们吧!

使用Time解决

使用Time的方式比较投机取巧吧。

require 'time'

p Time.at(1456466229973 / 1000, (1456466229973 % 1000) * 1000)

输出

2016-02-26 13:57:09 +0800
[Finished in 0.1s]

使用Date解决

require 'date'
date = DateTime.strptime "1456466229973",'%Q'
p date
p date.strftime("%FT%T%:z")

输出

#<DateTime: 2016-02-26T05:57:09+00:00 ((2457445j,21429s,973000000n),+0s,2299161j)>
"2016-02-26T05:57:09+00:00"
[Finished in 0.1s]
05-08 15:21