如何处理这种格式的时间戳?

How do I process this format of timestamp?

如何处理像

这样的输出
"TimeStamp: 1635251181000"

转换为 Python 中的可读格式。我试过 datetime.fromtimestamp() 但我得到了类似

的错误

OSError: [Errno 22] Invalid argument

这是一个 Unix time_t 值(自 1/1/1970 以来的秒数),乘以 1000 包括毫秒。它与 time.time()*1000 返回的值相同。所以:

>>> t = 1635251181000
>>> time.ctime(t/1000)
'Tue Oct 26 05:26:21 2021'
>>> 
from datetime import datetime

timestamp = your_timestamp
dt_object = datetime.fromtimestamp(timestamp/1000)

print("dt_object =", dt_object)
print("type(dt_object) =", type(dt_object))

要将时间戳转换为日期时间格式,您应该将时间戳除以 1000。

from datetime import datetime
ts = 1635251181000


utc_time = datetime.utcfromtimestamp(ts/1000)
local_time = datetime.fromtimestamp(ts/1000)
print(local_time)
print(utc_time)

@Tim 的回答提供了错误的确切原因。有关这方面的更多信息,请参阅此 answer。尽管它与Java有关,但事实是这样。

如果你的时间戳长度是13,那么它就是毫秒时间戳。直到 2286 结束都是如此 :-) 。因此,如果您希望时间戳发生变化,最好检查并设置它。

如果您的输入像 "TimeStamp: 1635251181000" 那么试试这个

from datetime import datetime
your_in = "TimeStamp: 1635251181000"
your_ts = your_in.split("TimeStamp:")[1].strip()
if len(your_ts)> 10:
    your_ts= int(your_ts[:10])
your_dt = datetime.fromtimestamp(your_ts)