@@ -35,7 +35,6 @@ from pandas._libs.tslibs.np_datetime cimport (
35
35
npy_datetimestruct_to_datetime,
36
36
pandas_datetime_to_datetimestruct,
37
37
pydate_to_dt64,
38
- pydatetime_to_dt64,
39
38
string_to_dts,
40
39
)
41
40
from pandas._libs.tslibs.strptime cimport parse_today_now
@@ -46,7 +45,6 @@ from pandas._libs.util cimport (
46
45
)
47
46
48
47
from pandas._libs.tslibs.np_datetime import OutOfBoundsDatetime
49
- from pandas._libs.tslibs.parsing import parse_datetime_string
50
48
51
49
from pandas._libs.tslibs.conversion cimport (
52
50
_TSObject,
@@ -542,13 +540,7 @@ cpdef array_to_datetime(
542
540
_ts = convert_str_to_tsobject(
543
541
val, None , unit = " ns" , dayfirst = dayfirst, yearfirst = yearfirst
544
542
)
545
- try :
546
- _ts.ensure_reso(NPY_FR_ns)
547
- except OutOfBoundsDatetime as err:
548
- # re-raise with better exception message
549
- raise OutOfBoundsDatetime(
550
- f" Out of bounds nanosecond timestamp: {val}"
551
- ) from err
543
+ _ts.ensure_reso(NPY_FR_ns, val)
552
544
553
545
iresult[i] = _ts.value
554
546
@@ -698,6 +690,7 @@ cdef _array_to_datetime_object(
698
690
ndarray[object ] oresult
699
691
npy_datetimestruct dts
700
692
cnp.broadcast mi
693
+ _TSObject tsobj
701
694
702
695
assert is_raise or is_ignore or is_coerce
703
696
@@ -725,20 +718,20 @@ cdef _array_to_datetime_object(
725
718
oresult[i] = " NaT"
726
719
cnp.PyArray_MultiIter_NEXT(mi)
727
720
continue
728
- elif val == " now" :
729
- oresult[i] = datetime.now()
730
- cnp.PyArray_MultiIter_NEXT(mi)
731
- continue
732
- elif val == " today" :
733
- oresult[i] = datetime.today()
734
- cnp.PyArray_MultiIter_NEXT(mi)
735
- continue
736
721
737
722
try :
738
- oresult[i] = parse_datetime_string(val, dayfirst = dayfirst,
739
- yearfirst = yearfirst)
740
- pydatetime_to_dt64(oresult[i], & dts)
741
- check_dts_bounds(& dts)
723
+ tsobj = convert_str_to_tsobject(
724
+ val, None , unit = " ns" , dayfirst = dayfirst, yearfirst = yearfirst
725
+ )
726
+ tsobj.ensure_reso(NPY_FR_ns, val)
727
+
728
+ dts = tsobj.dts
729
+ oresult[i] = datetime(
730
+ dts.year, dts.month, dts.day, dts.hour, dts.min, dts.sec, dts.us,
731
+ tzinfo = tsobj.tzinfo,
732
+ fold = tsobj.fold,
733
+ )
734
+
742
735
except (ValueError , OverflowError ) as ex:
743
736
ex.args = (f" {ex}, at position {i}" , )
744
737
if is_coerce:
0 commit comments