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



为了将unix时间戳字符串转换为可读日期,我遵循了以下答案。

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

当我提供1607111882000时作为输入;它打印CCD_ 2。但在以下网站(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/1000秒(GMT 2020年12月4日星期五19:58:02 GMT+0000相对3个月前

最新更新