使用 datetime.utcfromtimestamp() 的 unix 时间戳输出与其正确值不同

unix timestamp's output using datetime.utcfromtimestamp() differs from its correct value

我已按照 following answer 将 unix 时间戳字符串转换为可读日期。

from datetime import datetime ts = int("1284101485")
print(datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))

作为我提供时的输入1607111882000;它打印 2020-12-04 19:58:02。但是在下面的站点(https://www.unixtimestamp.com/index.php),输出如下:

1607111882000
Is equivalent to:

05/06/52897 @ 11:13pm (UTC)
52897-05-06T23:13:20+00:00 in ISO 8601

Mon, 06 May 52897 23:13:20 +0000 in RFC 822, 1036, 1123, 2822

Monday, 06-May-97 23:13:20 UTC in RFC 2822

52897-05-06T23:13:20+00:00 in RFC 3339

为什么会有这种差异,哪个是正确的?我应该怎么做才能获得与 unixtimestamp.com 网站相同的结果?

该网站可能正在使用 time.ctime 或等效功能:

>>> time.ctime(time.mktime(time.gmtime(1607111882000)))
'Mon May  6 23:13:20 52897'

至于是否正确使用值得商榷。日期可能不是 100% 准确。

对于您的数字,我认为您输入的是毫秒而不是秒,因为在我的机器上它给出了错误 (ValueError: year is out of range),但除以 1000 给出了两个函数的正确日期:

>>> ts = 1607111882
>>> print(datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))
2020-12-04 19:58:02
>>> time.ctime(time.mktime(time.gmtime(ts)))
'Fri Dec  4 19:58:02 2020'
>>> 

你说得对。而unixtimestamp(UT)错误。我认为 UT 错误在秒和毫秒之间。

允许访问https://unixtime.org/,本站支持Unix时间戳,单位为秒、毫秒、微秒和纳秒。

示例:1607111882000 结果: 格式 毫秒(1/1,000 秒) GMT 2020 年 12 月 4 日星期五 19:58:02 GMT+0000 亲戚 3 个月前