Thanks Mark! John
On Wed, Feb 8, 2012 at 6:48 PM, Mark Wiebe <mwwi...@gmail.com> wrote: > Converting between date and datetime requires caution, because it depends > on your time zone. Because all datetime64's are internally stored in UTC, > simply casting as in your example treats it in UTC. The 'astype' function > does not raise an error to tell you that this is problematic, because > NumPy's default casting for that function has no error policy (yet). > > Here's the trouble you can get into: > > x = datetime64('2012-02-02 22:00:00', 's') > > x.astype('M8[D]') > Out[19]: numpy.datetime64('2012-02-03') > > > The trouble happens the other way too, because a date is represented as > midnight UTC. This would also raise an exception, but for the fact that > astype does no checking: > > x = datetime64('2012-02-02') > > x.astype('M8[m]') > Out[23]: numpy.datetime64('2012-02-01T16:00-0800') > > > The intention is to have functions which handles this casting explicitly, > called datetime_as_date and date_as_datetime. They would take a timezone > parameter, so the code explicitly specifies how the conversion takes place. > A crude replacement for now is: > > x = datetime64('2012-02-02 22:00:00', 's') > > np.datetime64(np.datetime_as_string(x, timezone='local')[:10]) > Out[21]: numpy.datetime64('2012-02-02') > > > This is hackish, but it should do what you want. > > -Mark > > On Wed, Feb 8, 2012 at 9:10 AM, John Salvatier > <jsalv...@u.washington.edu>wrote: > >> >> Hello, is there a good way to get just the date part of a datetime64? >> Frequently datetime datatypes have month(), date(), hour(), etc functions >> that pull out part of the datetime, but I didn't see those mentioned in the >> datetime64 docs. Casting to a 'D' dtype didn't work as I would have hoped: >> >> In [30]: x= datetime64('2012-02-02 09:00:00', 's') >> >> In [31]: x >> Out[31]: numpy.datetime64('2012-02-02T09:00:00-0800') >> >> In [32]: x.astype('datetime64[D]').astype('datetime64[s]') >> Out[32]: numpy.datetime64('2012-02-01T16:00:00-0800') >> >> What's the simplest way to do this? >> >> >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@scipy.org >> http://mail.scipy.org/mailman/listinfo/numpy-discussion >> >> > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion