[Python-ideas] Reduce platform dependence of date and time related functions

random832 at fastmail.us random832 at fastmail.us
Tue Sep 17 21:08:49 CEST 2013

On Tue, Sep 17, 2013, at 13:29, Alexander Belopolsky wrote:
> On Tue, Sep 17, 2013 at 12:49 PM, <random832 at fastmail.us> wrote:
> > 32-bit platforms are still limited by the range of
> > time_t for gmtime [and e.g. datetime.fromtimestamp],
> >
> datetime.fromtimestamp() is not the same as gmtime.  You should use
> datetime.utcfromtimestamp()  which is only limited by supported date
> range
> (years 1-9999).

fromtimestamp(timestamp, timezone.utc).

And anyway, I was listing it as _another example_ of a function in
datetime which is limited by the range of time_t, not as one that is
somehow "the same as" gmtime. And even if you want to play this game,
you are WRONG WRONG WRONG about utcfromtimestamp:

Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:06:53) [MSC v.1600 64
bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import *
>>> datetime.utcfromtimestamp(-100000) # should be  1969-12-30 20:13:20
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 22] Invalid argument
>>> datetime.utcfromtimestamp(2**63)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: timestamp out of range for platform time_t

(I don't care, per se, about 300 billion years from now, but I am 99%
certain I'd get the same result for the latter with 2**31 on 32-bit
Unix. This was to illustrate that it requires it to be in the range of
the platform time_t type.)

I feel like you're being deliberately obtuse at this point.

More information about the Python-ideas mailing list