@@ -560,7 +560,11 @@ cdef inline _check_dts_bounds(int64_t value, pandas_datetimestruct *dts):
560
560
if dts.year <= 1677 or dts.year >= 2262 :
561
561
pandas_datetime_to_datetimestruct(value, PANDAS_FR_ns, & dts2)
562
562
if dts2.year != dts.year:
563
- raise ValueError (' Out of bounds timestamp in year: %s ' % dts.year)
563
+ fmt = ' %d -%.2d -%.2d %.2d :%.2d :%.2d ' % (dts.year, dts.month,
564
+ dts.day, dts.hour,
565
+ dts.min, dts.sec)
566
+
567
+ raise ValueError (' Out of bounds nanosecond timestamp: %s ' % fmt)
564
568
565
569
# elif isinstance(ts, _Timestamp):
566
570
# tmp = ts
@@ -645,8 +649,10 @@ def array_to_datetime(ndarray[object] values, raise_=False, dayfirst=False):
645
649
iresult[i] = iNaT
646
650
elif PyDateTime_Check(val):
647
651
iresult[i] = _pydatetime_to_dts(val, & dts)
652
+ _check_dts_bounds(iresult[i], & dts)
648
653
elif PyDate_Check(val):
649
654
iresult[i] = _date_to_datetime64(val, & dts)
655
+ _check_dts_bounds(iresult[i], & dts)
650
656
elif util.is_datetime64_object(val):
651
657
iresult[i] = _get_datetime64_nanos(val)
652
658
elif util.is_integer_object(val):
@@ -659,6 +665,9 @@ def array_to_datetime(ndarray[object] values, raise_=False, dayfirst=False):
659
665
result[i] = parse(val, dayfirst = dayfirst)
660
666
except Exception :
661
667
raise TypeError
668
+ pandas_datetime_to_datetimestruct(iresult[i], PANDAS_FR_ns,
669
+ & dts)
670
+ _check_dts_bounds(iresult[i], & dts)
662
671
return result
663
672
except TypeError :
664
673
oresult = np.empty(n, dtype = object )
0 commit comments