千年范围的时间戳转换器,Python

0 投票
1 回答
846 浏览
提问于 2025-04-15 17:27

有没有一种可以处理千年时间的时间戳转换器?

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上就不太好使了。不过因为你还没有具体说你想用日期做什么,所以现在这样可能就够用了。

撰写回答