且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将时间戳自纪元转换为 datetime.datetime

更新时间:2023-01-22 13:28:21

我会使用 time 模块

>>>导入时间>>>time.gmtime(1346114717972/1000.)time.struct_time(tm_year=2012, tm_mon=8, tm_mday=28, tm_hour=0, tm_min=45, tm_sec=17, tm_wday=1, tm_yday=241, tm_isdst=0)

这显示了 UTC/GMT 时间的时间戳.

时间戳除以 1000,因为您提供的戳记是自纪元以来的 毫秒,而不是秒.

然后使用 strftime 来格式化:

>>>time.strftime('%m/%d/%Y %H:%M:%S', time.gmtime(1346114717972/1000.))'08/28/2012 00:45:17'

I have the following timestamps since epoch:

Timestamp
1346114717972
1354087827000

How can I convert these timestamps to some specific output format, e.g., mm/dd/yyyy hr:min:sec?

I have tried to convert them to datetime.datetime but it failed:

 >>> datetime.datetime.fromtimestamp(1346114717972)
 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 ValueError: timestamp out of range for platform time_t

How can I do this?

I would use the time module

>>> import time
>>> time.gmtime(1346114717972/1000.)
time.struct_time(tm_year=2012, tm_mon=8, tm_mday=28, tm_hour=0, tm_min=45, tm_sec=17, tm_wday=1, tm_yday=241, tm_isdst=0)  

This shows the timestamp in UTC/GMT time.

The timestamp is divided by 1000 as the stamps you have provided are in milliseconds since the epoch, not seconds.

Then use strftime to format like so:

>>> time.strftime('%m/%d/%Y %H:%M:%S',  time.gmtime(1346114717972/1000.))
'08/28/2012 00:45:17'