@@ -2250,9 +2250,7 @@ def _sequence_to_dt64(
22502250 )
22512251 return result , tz , None
22522252 else :
2253- # data comes back here as either i8 to denote UTC timestamps
2254- # or M8[ns] to denote wall times
2255- converted , inferred_tz = objects_to_datetime64ns (
2253+ converted , inferred_tz = objects_to_datetime64 (
22562254 data ,
22572255 dayfirst = dayfirst ,
22582256 yearfirst = yearfirst ,
@@ -2262,13 +2260,13 @@ def _sequence_to_dt64(
22622260 copy = False
22632261 if tz and inferred_tz :
22642262 # two timezones: convert to intended from base UTC repr
2265- assert converted .dtype == "i8"
2266- # GH#42505
2267- # by convention, these are _already_ UTC, e.g
2263+ # GH#42505 by convention, these are _already_ UTC
2264+ assert converted .dtype == out_dtype , converted .dtype
22682265 result = converted .view (out_dtype )
22692266
22702267 elif inferred_tz :
22712268 tz = inferred_tz
2269+ assert converted .dtype == out_dtype , converted .dtype
22722270 result = converted .view (out_dtype )
22732271
22742272 else :
@@ -2360,7 +2358,7 @@ def _construct_from_dt64_naive(
23602358 return result , copy
23612359
23622360
2363- def objects_to_datetime64ns (
2361+ def objects_to_datetime64 (
23642362 data : np .ndarray ,
23652363 dayfirst ,
23662364 yearfirst ,
@@ -2388,10 +2386,11 @@ def objects_to_datetime64ns(
23882386 Returns
23892387 -------
23902388 result : ndarray
2391- np.int64 dtype if returned values represent UTC timestamps
2392- np.datetime64[ns] if returned values represent wall times
2389+ np.datetime64[out_unit] if returned values represent wall times or UTC
2390+ timestamps.
23932391 object if mixed timezones
23942392 inferred_tz : tzinfo or None
2393+ If not None, then the datetime64 values in `result` denote UTC timestamps.
23952394
23962395 Raises
23972396 ------
@@ -2414,11 +2413,8 @@ def objects_to_datetime64ns(
24142413 if tz_parsed is not None :
24152414 # We can take a shortcut since the datetime64 numpy array
24162415 # is in UTC
2417- # Return i8 values to denote unix timestamps
2418- return result .view ("i8" ), tz_parsed
2416+ return result , tz_parsed
24192417 elif result .dtype .kind == "M" :
2420- # returning M8[ns] denotes wall-times; since tz is None
2421- # the distinction is a thin one
24222418 return result , tz_parsed
24232419 elif result .dtype == object :
24242420 # GH#23675 when called via `pd.to_datetime`, returning an object-dtype
0 commit comments