具有千年范围的epoch时间戳转换器,python

时间:2009-12-29 16:33:25

标签: python

是否有一个可以处理数千年的纪元时间转换器?

time.gmtime(1000 * 365 * 24 * 60 * 60)

抛出

ValueError: timestamp out of range for platform time_t

1 个答案:

答案 0 :(得分:0)

是的,至少在Windows上(在这里使用Windows 7)。你在用什么平台?

Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on win32
>>> time.gmtime(1000*365*24*60*60)
time.struct_time(tm_year=2969, tm_mon=5, tm_mday=3, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=123, tm_isdst=0)

此外,即使在Linux上,您也应该能够使用datetime module对2038年以后的日期进行处理。文档说该模块的MAXYEAR是9999:

>>> dt = datetime.datetime.now().replace(year=1000+1971)
>>> dt
datetime.datetime(2971, 12, 29, 11, 43, 20, 727000)
>>> dt.timetuple()
time.struct_time(tm_year=2971, tm_mon=12, tm_mday=29, tm_hour=11, tm_min=41, tm_sec=16, tm_wday=6, tm_yday=363, tm_isdst=-1)

当然,如果time.gmtime()调用失败,那最后一次调用可能无法在Linux上运行,但由于你还没有真正说出你想对日期做什么,这可能就足够了。