使用epoch自动初始化一个date时间对象

time模块可以使用从时代开始的秒数进行初始化:

 >>> import time >>> t1=time.gmtime(1284286794) >>> t1 time.struct_time(tm_year=2010, tm_mon=9, tm_mday=12, tm_hour=10, tm_min=19, tm_sec=54, tm_wday=6, tm_yday=255, tm_isdst=0) 

有没有一种优雅的方式来以相同的方式初始化一个datetime.datetime对象?

datetime.datetime.fromtimestamp会做,如果你知道时区,你可以产生与time.gmtime相同的输出

 >>> datetime.datetime.fromtimestamp(1284286794) datetime.datetime(2010, 9, 12, 11, 19, 54) 

要么

 >>> datetime.datetime.utcfromtimestamp(1284286794) datetime.datetime(2010, 9, 12, 10, 19, 54) 

自从epoch到datetimestrftime秒数:

 >>> ts_epoch = 1362301382 >>> ts = datetime.datetime.fromtimestamp(ts_epoch).strftime('%Y-%m-%d %H:%M:%S') >>> ts '2013-03-03 01:03:02' 

从文档中,推荐的方法获得一个时区感知的date时间对象从时代以来秒是:

Python 3 :

 from datetime import datetime, timezone datetime.fromtimestamp(timestamp, timezone.utc) 

Python 2 ,使用pytz

 from datetime import datetime import pytz datetime.fromtimestamp(timestamp, pytz.utc) 

请注意datetime.datetime。 fromtimestamp (timestamp)和。 utcfromtimestamp (timestamp)在1970年1月1日之前的date的窗口上失败,而负面的unix时间戳似乎在基于Unix的平台上工作。 文档说这个:

“ 如果时间戳超出了平台C gmtime()函数所支持的值的范围,这可能会引起ValueError,这种情况通常限制在1970年到2038年 ”

另见文献1646728