是否有可以处理千年的历元时间转换器?具有千年时间范围的历元时间戳转换器,蟒蛇
time.gmtime(1000 * 365 * 24 * 60 * 60)
抛出
ValueError: timestamp out of range for platform time_t
是否有可以处理千年的历元时间转换器?具有千年时间范围的历元时间戳转换器,蟒蛇
time.gmtime(1000 * 365 * 24 * 60 * 60)
抛出
ValueError: timestamp out of range for platform time_t
是的,至少在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)
当然,这最后一次通话可能不会在Linux中,如果time.gmtime()
调用失败的工作,但因为你还没有真正说你想要做什么与日期也许这是足够的现在。
我在macosx上。 奇怪的是,它确实允许 “datetime.datetime(2971,12,29,11,43,20,727000)” 没有错误。 – jeremy 2009-12-29 16:49:58
@_jeremy,没有什么奇怪的,因为datetime对象应该在所有平台上支持它。这是'.timetuple()'调用,我期望在'time.gmtime()'调用失败的任何地方都会失败。 – 2009-12-29 18:26:11
这将在使用64位库的64位平台上正常工作。它会失败(如你所见)在32位平台 – 2011-09-07 20:50:18