@@ -612,15 +612,12 @@ def _simple_new(cls, values, name=None, freq=None, tz=None,
612612 dtype = dtype , ** kwargs )
613613 values = np .array (values , copy = False )
614614
615+ if not is_datetime64_dtype (values ):
616+ values = _ensure_int64 (values ).view (_NS_DTYPE )
617+
615618 assert isinstance (values , np .ndarray ), "values is not an np.ndarray"
616619 assert is_datetime64_dtype (values )
617620
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-
624621 result = super (DatetimeIndex , cls )._simple_new (values , freq , tz ,
625622 ** kwargs )
626623 result .name = name
@@ -1918,9 +1915,7 @@ def _generate_regular_range(start, end, periods, freq):
19181915 "if a 'period' is given." )
19191916
19201917 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 )
19241919 else :
19251920 if isinstance (start , Timestamp ):
19261921 start = start .to_pydatetime ()
0 commit comments