千年范围的时间戳转换器,Python
有没有一种可以处理千年时间的时间戳转换器?
time.gmtime(1000 * 365 * 24 * 60 * 60)
抛出
ValueError: timestamp out of range for platform time_t
1 个回答
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模块来处理2038年以后的日期。文档里说这个模块的最大年份是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上就不太好使了。不过因为你还没有具体说你想用日期做什么,所以现在这样可能就够用了。