[Python-Dev] proposal: add basic time type to the standard library
Guido van Rossum
guido@python.org
Wed, 27 Feb 2002 08:07:15 -0500
> FYI, mxDateTime test the C lib for leap second support; if leap
> seconds are used, then it has to support these too in conversions
> from and to Unix ticks.
Since AFAIK POSIX doesn't admit the existence of leap seconds, how do
you ask the C library for leap seconds?
> > BTW, I doubt there'd be any discussion of leap seconds in the C
> > std if some astronomers hadn't been early Unix users. It's never
> > a net win in the end to try to make a scientist happy <0.9 wink>.
Yeah, we learned that the hard way by adding complex numbers. :-)
> What strange about leap seconds is that they don't fit well with
> the idea of counting seconds since some fixed point in history.
> They are only useful for conversions from this count to a broken
> down date and time representation.... time simply doesn't
> leap.
>
> >From a comment in mxDateTime:
> /* This function checks whether the system uses the POSIX time_t rules
> (which do not support leap seconds) or a time package with leap
> second support enabled. Return 1 if it uses POSIX time_t values, 0
> otherwise.
>
> POSIX: 1986-12-31 23:59:59 UTC == 536457599
>
> With leap seconds: == 536457612
>
> (since there were 13 leap seconds in the years 1972-1985 according
> to the tz package available from ftp://elsie.nci.nih.gov/pub/)
>
> */
I think an important (but so far unvoiced) requirement is that
datetime objects can be stored in a database. Since the database may
be read by systems that may or may not support leap seconds, we should
be independent of the leap second support in the C library. As I've
said before, we should ignore leap seconds. Even if we end up
expressing times deltas as a number of seconds, that should be
understood to be calendar seconds and not astronomical seconds. Let
the astronomers deal with leap seconds themselves -- they should know
how to.
BTW, this means that we can't use the C calls mktime(), timegm(),
localtime(), and gmtime(), or their Python wrappers in the time
module! That's fine by me.
--Guido van Rossum (home page: http://www.python.org/~guido/)