@@ -611,15 +611,12 @@ def _simple_new(cls, values, name=None, freq=None, tz=None,
611611 dtype = dtype , ** kwargs )
612612 values = np .array (values , copy = False )
613613
614+ if not is_datetime64_dtype (values ):
615+ values = _ensure_int64 (values ).view (_NS_DTYPE )
616+
614617 assert isinstance (values , np .ndarray ), "values is not an np.ndarray"
615618 assert is_datetime64_dtype (values )
616619
617- if is_object_dtype (values ):
618- return cls (values , name = name , freq = freq , tz = tz ,
619- dtype = dtype , ** kwargs ).values
620- elif not is_datetime64_dtype (values ):
621- values = _ensure_int64 (values ).view (_NS_DTYPE )
622-
623620 result = object .__new__ (cls )
624621 result ._data = values
625622 result .name = name
@@ -2094,9 +2091,7 @@ def _generate_regular_range(start, end, periods, freq):
20942091 "if a 'period' is given." )
20952092
20962093 data = np .arange (b , e , stride , dtype = np .int64 )
2097-
2098- # _simple_new is getting an array of int64 here
2099- data = DatetimeIndex ._simple_new (data , None , tz = tz )
2094+ data = DatetimeIndex ._simple_new (data .view (_NS_DTYPE ), None , tz = tz )
21002095 else :
21012096 if isinstance (start , Timestamp ):
21022097 start = start .to_pydatetime ()
0 commit comments