是否有一个可以处理数千年的纪元时间转换器?
time.gmtime(1000 * 365 * 24 * 60 * 60)
抛出
ValueError: timestamp out of range for platform time_t
答案 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上运行,但由于你还没有真正说出你想对日期做什么,这可能就足够了。