[Numpy-discussion] datetime64: Remove deprecation warning when constructing with timezone

Eric Wieser wieser.eric+numpy at gmail.com
Thu Nov 5 16:04:21 EST 2020


Without weighing in yet on how I feel about the deprecation, you can see
some discussion about why this was originally deprecated in the PR that
introduced the warning:

https://github.com/numpy/numpy/pull/6453

Eric

On Thu, Nov 5, 2020, 20:13 Noam Yorav-Raphael <noamraph at gmail.com> wrote:

> Hi,
>
> I suggest removing the deprecation warning when constructing a datetime64
> with a timezone. For example, this is the current behavior:
>
> >>> np.datetime64('2020-11-05 16:00+0200')
> <stdin>:1: DeprecationWarning: parsing timezone aware datetimes is
> deprecated; this will raise an error in the future
> numpy.datetime64('2020-11-05T14:00')
>
> I suggest removing the deprecation warning because I find this to be a
> useful behavior, and because it is a correct behavior. The manual says:
> "The datetime object represents a single moment in time... Datetimes are
> always stored based on POSIX time, with an epoch of 1970-01-01T00:00Z."
> So 2020-11-05T16:00+0200 is indeed the moment in time represented by
> np.datetime64('2020-11-05T14:00').
>
> I just used this to restrict my data set to records created after a
> certain moment. It was easier for me to write the moment in my local time
> and add "+0200" than to figure out the moment representation in UTC.
>
> So this is my simple suggestion: remove the deprecation warning.
>
>
> Beyond that, I have 3 ideas for changing the repr of datetime64 that I
> would like to discuss.
>
> 1. Add "Z" at the end, for example, numpy.datetime64('2020-11-05T14:00Z').
> This will make it clear to which moment it refers. I think this is
> significant - I had to dig quite a bit to realize that
> datetime64('2020-11-05T14:00') means 14:00 UTC.
>
> 2. Replace the 'T' with a space. I just find it much easier to read
> '2020-11-05 14:00Z' than '2020-11-05T14:00Z'. The long sequence of
> characters makes it hard for my brain to parse.
>
> 3. This will require discussion, but will be very convenient: have the
> repr display the time using the environment time zone, including a time
> offset. So, in my specific time zone (+0200), I will have:
>
> repr(np.datetime64('2020-11-05 14:00Z')) ==
> "numpy.datetime64('2020-11-05T16:00+0200')"
>
> I'm sure the pros and cons of having an environment-dependent repr should
> be discussed. But I will list some pros:
> 1. It's very convenient - it's immediately obvious to me to which moment
> 2020-11-05 16:00+0200 refers.
> 2. It's well defined - I may collect timestamps from machines with
> different time zones, and I will be able to know to which exact moment each
> timestamp refers.
> 3. It's very simple - I could compare any two timestamps, I don't have to
> worry about time zones.
>
> I would be happy to hear your thoughts.
>
> Thanks,
> Noam
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.python.org/pipermail/numpy-discussion/attachments/20201105/4772f5fc/attachment.html>


More information about the NumPy-Discussion mailing list