The time
documentation doesn't mention any limits, but the datetime
documentation does:
fromtimestamp()
may raise OverflowError
, if the timestamp is out of the range of values supported by the platform C localtime()
or gmtime()
functions, and OSError
on localtime()
or gmtime()
failure.
[...]
Naive datetime
instances are assumed to represent local time and this method relies on the platform C mktime()
function to perform the conversion. Since datetime
supports wider range of values than mktime()
on many platforms, this method may raise OverflowError
for times far in the past or far in the future.
Then we head over to the Windows documentation:
_localtime64
, which uses the __time64_t
structure, allows dates to be expressed up through 23:59:59, December 31, 3000, coordinated universal time (UTC), whereas _localtime32
represents dates through 23:59:59 January 18, 2038, UTC.
localtime
is an inline function which evaluates to _localtime64
, and time_t
is equivalent to __time64_t
. If you need to force the compiler to interpret time_t
as the old 32-bit time_t
, you can define _USE_32BIT_TIME_T
. Doing this will cause localtime
to evaluate to _localtime32
. This is not recommended because your application may fail after January 18, 2038, and it is not allowed on 64-bit platforms.
All the time-related functions (including ctime
) work the same way. So the max date you can reliably convert between timestamps on Windows 10 is 3000-12-31T23:59:59Z.
Trying to get a platform-independent max timestamp is difficult.