从纪元到日期时间的转换不正确

Conversion from epoch to datetime is incorrect

我一直在使用 this answer 将纪元时间转换为 DateTime。我有这个纪元号:

epoch = 1549626705942

并做:

Time.at(epoch).to_datetime

但是,我得到的结果是:

#<DateTime: 51075-09-19T08:45:42+02:00 ((20376082j,24342s,0n),+7200s,2299161j)>

我使用的是 Ruby 版本 2.5.3p105,我的时钟设置为当年。这个纪元值计算为今天的日期(2019 年 2 月 2 日),但我得到的是 51075 年。真的不确定发生了什么。

这也很奇怪,因为当我在像 this one I get today's date but here 这样的网站上输入我的时间戳时,我得到的结果与我的 Ruby 代码相同。

编辑:我试图删除该日期的最后 3 个数字并得到了正确的日期。那么这么说是不是有2个epoch"formats"?

您正在将毫秒传递给 Time::at() 方法。你应该在那里过秒。 Link 到文档是 here

要检索 Epoch 值(以秒为单位),请使用 Time#to_i

UPD

这对你有用:

Time.at(0, your_epoch_milliseconds, :millisecond)