есть ли конвертер времени, который может иметь дело с тысячелетиями?эпоха timestamp конвертер с диапазоном тысячелетий, python
time.gmtime(1000 * 365 * 24 * 60 * 60)
бросает
ValueError: timestamp out of range for platform time_t
есть ли конвертер времени, который может иметь дело с тысячелетиями?эпоха timestamp конвертер с диапазоном тысячелетий, python
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, вы должны быть в состоянии сделать некоторую обработку дат далеко за 2038 с помощью datetime module. Документы говорят 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
@_jeremy, ничего странного в этом, так как объект datetime должен поддерживать его на всех платформах. Это вызов '.timetuple()', который я ожидаю, будет терпеть неудачу, когда вызов 'time.gmtime()' завершается с ошибкой. –
Это будет прекрасно работать на 64-битной платформе с использованием 64-битных библиотек. Он потерпит неудачу (как вы нашли) на 32-битной платформе –