
On Mon, Apr 14, 2014 at 11:59 AM, Chris Barker <chris.barker@noaa.gov>wrote:
- datetime64 objects with high precision (e.g., ns) can't compare to
datetime objects.
That's a problem, but how do you think it should be handled? My thought is that it should round to microseconds, and then compare -- kind of like comparing float32 and float64...
I agree -- if the ns matter, you shouldn't be using datetime.datetime objects. Similarly, it's currently not possible to convert high precision datetime64 objects into datetimes. Worse, this doesn't even raise an error!
from datetime import datetime import numpy as np np.datetime64('2000-01-01T00:00:00Z', 'us').astype(datetime)
datetime.datetime(2000, 1, 1, 0, 0)
np.datetime64('2000-01-01T00:00:00Z', 'ns').astype(datetime)
946684800000000000L Other inconsistent behavior:
np.datetime64('2000', 'M') numpy.datetime64('2000-01') np.datetime64('2000', 'D') numpy.datetime64('2000-01-01') np.datetime64('2000', 's')
TypeError Traceback (most recent call last) <ipython-input-67-bf5fc9a2985b> in <module>() ----> 1 np.datetime64('2000', 's') TypeError: Cannot parse "2000" as unit 's' using casting rule 'same_kind' More broadly, my recommendation is to look through the unit tests for pandas' datetIme handling: https://github.com/pydata/pandas/tree/master/pandas/tseries/tests Not everything is relevant but you might find some test cases you could borrow wholesale. Pandas is BSD licensed, so you may even be able to copy them directly into numpy. Best, Stephan