@@ -612,15 +612,12 @@ def _simple_new(cls, values, name=None, freq=None, tz=None,
612
612
dtype = dtype , ** kwargs )
613
613
values = np .array (values , copy = False )
614
614
615
+ if not is_datetime64_dtype (values ):
616
+ values = _ensure_int64 (values ).view (_NS_DTYPE )
617
+
615
618
assert isinstance (values , np .ndarray ), "values is not an np.ndarray"
616
619
assert is_datetime64_dtype (values )
617
620
618
- if is_object_dtype (values ):
619
- return cls (values , name = name , freq = freq , tz = tz ,
620
- dtype = dtype , ** kwargs ).values
621
- elif not is_datetime64_dtype (values ):
622
- values = _ensure_int64 (values ).view (_NS_DTYPE )
623
-
624
621
result = super (DatetimeIndex , cls )._simple_new (values , freq , tz ,
625
622
** kwargs )
626
623
result .name = name
@@ -1918,9 +1915,7 @@ def _generate_regular_range(start, end, periods, freq):
1918
1915
"if a 'period' is given." )
1919
1916
1920
1917
data = np .arange (b , e , stride , dtype = np .int64 )
1921
-
1922
- # _simple_new is getting an array of int64 here
1923
- data = DatetimeIndex ._simple_new (data , None , tz = tz )
1918
+ data = DatetimeIndex ._simple_new (data .view (_NS_DTYPE ), None , tz = tz )
1924
1919
else :
1925
1920
if isinstance (start , Timestamp ):
1926
1921
start = start .to_pydatetime ()
0 commit comments