W przypadku wielu wartości, takich jak zbyt daleko w przeszłości lub w przyszłości, podawanie znacznika czasu do numeru fromtimestamp()
spowoduje złożenie skargi z błędem poza zakresem. Możesz jednak obliczyć datę, korzystając z numeru timedelta()
względem epoki.
>>> from datetime import datetime, timedelta
>>> date = datetime(1970, 1, 1) + timedelta(seconds=-216345600)
>>> date
datetime.datetime(1963, 2, 23, 0, 0)
>>> date.strftime('%a, %d %b %Y %H:%M:%S GMT')
'Sat, 23 Feb 1963 00:00:00 GMT'
Jednak należy pamiętać, że nie można wykorzystać, aby cofnąć się do ery dinozaurów, ponieważ datetime()
wciąż ma minimalna i maksymalna wartość może obsługiwać.
>>> datetime(1970, 1, 1) + timedelta(seconds=-62135596800)
datetime.datetime(1, 1, 1, 0, 0)
>>> datetime(1970, 1, 1) + timedelta(seconds=253402300799)
datetime.datetime(9999, 12, 31, 23, 59, 59)
>>> datetime(1970, 1, 1) + timedelta(seconds=253402300800)
Traceback (most recent call last):
File "<pyshell#157>", line 1, in <module>
datetime(1970, 1, 1) + timedelta(seconds=253402300800)
OverflowError: date value out of range
timedelta()
ma swoje granice, a także, ale z epoki jako punkt odniesienia, nie doszli nawet blisko ich osiągnięcia.
>>> timedelta(microseconds=1000000000*86400*10000-1)
datetime.timedelta(9999999, 86399, 999999)
co chcesz dostać ... mi kod nie daje błąd – Stefano
related: [uzyskać najwyższy możliwy gmtime dla każdej architektury] (http://stackoverflow.com/q/32045725/4279) – jfs