[Numpy-discussion] RFC: A proposal for implementing some date/time types in NumPy
Francesc Alted
falted at pytables.org
Mon Jul 14 07:36:33 EDT 2008
A Saturday 12 July 2008, Jon Wright escrigué:
> Charles R Harris wrote:
> > On Fri, Jul 11, 2008 at 12:37 PM, Francesc Alted
> >
> > A Friday 11 July 2008, Francesc Alted escrigué:
> > > A Friday 11 July 2008, Jon Wright escrigué:
> > > > Nice idea - please can you make it work with matplotlib's
> > > > time/date
> > >
> > > Hmmm, following the matplotlib docstrings:
> > >
> > > """
> > > datetime objects are converted to floating point numbers
> > > which represent the number of days since 0001-01-01 UTC
> > > """
>
> ...
>
> > > this more carefully, but I suppose that if there is interest
> > > enough that could be implemented, yes.
> >
> > Now that I think about this, wouldn't be better if, after the
> > eventual introduction of the new datetime types in NumPy, the
> > matplotlib would use any of these three and throw away their
> > current datetime class? [Unless they have good reasons for keeping
> > their epoch and/or scale]
> >
> > Especially as there was a ten day adjustment made with the adoption
> > of the Gregorian calender on Oct 4, 1582; early dates can be hard
> > to interpret. Curiously, IIRC, 01/01/0001 was a Monday.
>
> So I think I will just want to plot timeseries without (ever please)
> caring about date formats again. If you're proposing a "new" format
> then I'm assuming you want me to once again care that:
>
> 1) my temperature logger is recording data in Romance Standard Time,
> but not saying so, just day/month/year : time.
> 2) When we read that data we cannot tell which time zone it was
> recorded in, even if we think we remember where the logger was when
> it logged. 3) That the program I am running could currently be in any
> time zone 4) Whether the program is plotting compared to "now" in the
> current time zone or "then" that the data were recorded.
>
> None of these problems are new, or indeed unique, I think we only
> want a to_ and from_ converter to "what we mean" that we can plot,
> using matplotlib.
Well, timezones are a hairy issue. From the docstrings of the Python's
``datetime`` module:
"""
Supporting timezones at whatever level of detail is required is up to
the application. The rules for time adjustment across the world are
more political than rational, and there is no standard suitable for
every application.
"""
In fact, the approach for the ``datetime`` module is that the user has
to provide a concrete class (derived from the abstract ``tzinfo``
class) with *user-defined* methods that are supposed to do the
necessary computations to convert UTC <--> 'localtime' timestamps.
However, doing the same in NumPy itself would be prohibitive in terms of
computational effort. So, our intention was to ignore this part of the
reality (timezones) by always working internally with UTC time and let
the user do the necessary conversions by using the machinery (together
with user's own methods) that provides the ``datetime`` module.
We really think that this is a sensible way to proceed with timezones in
the NumPy context.
> Timezones are a heck of a problem if you want to be accurate. You are
> talking about nanosecond resolutions, however, atomic clocks in orbit
> apparently suffer from relativistic corrections of the order 38000
> nanoseconds per day [1]. What will you do about data recorded on the
> international space station? Getting into time formats at this level
> seems to be rather complicated - there is no absolute time you can
> reference to - it is all relative :-)
Wow, this is really a much larger jitter than I expected. I suppose
that this reinforces the decision of deprecate the use of the TAI
standard just for improving the precision in large time spans.
Thanks,
--
Francesc Alted
More information about the NumPy-Discussion
mailing list