关于ruby:从epoch到datetime的转换不正确

Conversion from epoch to datetime is incorrect

我一直在用这个答案把纪元时间转换成日期时间。我有这个时代号:

1
epoch = 1549626705942

然后做:

1
Time.at(epoch).to_datetime

但是,我得到的结果是:

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

我使用的是Ruby版本2.5.3P105,我的时钟设置为当前年份。这个时代值估计到今天的日期(2019年2月2日),但我得到的是51075年。真的不知道发生了什么。

这也很奇怪,因为当我在一个像这样的站点输入时间戳时,我得到了今天的日期,但在这里我得到了和我的Ruby代码相同的结果。

编辑:我试图删除这个日期的最后3个数字,得到了正确的日期。那么有没有两种时代的"格式"可以这么说?


您正在向Time::at()方法传递毫秒。你应该在那里过几秒钟。这里是指向文档的链接。

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

UPD

这对您很有用:

1
Time.at(0, your_epoch_milliseconds, :millisecond)