@@ -610,15 +610,12 @@ def _simple_new(cls, values, name=None, freq=None, tz=None,
610
610
dtype = dtype , ** kwargs )
611
611
values = np .array (values , copy = False )
612
612
613
+ if not is_datetime64_dtype (values ):
614
+ values = _ensure_int64 (values ).view (_NS_DTYPE )
615
+
613
616
assert isinstance (values , np .ndarray ), "values is not an np.ndarray"
614
617
assert is_datetime64_dtype (values )
615
618
616
- if is_object_dtype (values ):
617
- return cls (values , name = name , freq = freq , tz = tz ,
618
- dtype = dtype , ** kwargs ).values
619
- elif not is_datetime64_dtype (values ):
620
- values = _ensure_int64 (values ).view (_NS_DTYPE )
621
-
622
619
result = super (DatetimeIndex , cls )._simple_new (values , freq , tz ,
623
620
** kwargs )
624
621
result .name = name
@@ -1862,9 +1859,7 @@ def _generate_regular_range(start, end, periods, freq):
1862
1859
"if a 'period' is given." )
1863
1860
1864
1861
data = np .arange (b , e , stride , dtype = np .int64 )
1865
-
1866
- # _simple_new is getting an array of int64 here
1867
- data = DatetimeIndex ._simple_new (data , None , tz = tz )
1862
+ data = DatetimeIndex ._simple_new (data .view (_NS_DTYPE ), None , tz = tz )
1868
1863
else :
1869
1864
if isinstance (start , Timestamp ):
1870
1865
start = start .to_pydatetime ()
0 commit comments