@@ -33,7 +33,6 @@ cimport util
3333from cpython.datetime cimport PyDelta_Check, PyTZInfo_Check
3434# this is our datetime.pxd
3535from datetime cimport (
36- pandas_datetimestruct,
3736 pandas_datetime_to_datetimestruct,
3837 pandas_datetimestruct_to_datetime,
3938 days_per_month_table,
@@ -50,14 +49,15 @@ from datetime cimport (
5049 PANDAS_FR_ns,
5150 PyDateTime_Check, PyDate_Check,
5251 PyDateTime_IMPORT,
53- timedelta, datetime
54- )
52+ timedelta, datetime)
5553
5654# stdlib datetime imports
5755from datetime import timedelta, datetime
5856from datetime import time as datetime_time
5957
60- from tslibs.np_datetime cimport check_dts_bounds
58+ from tslibs.np_datetime cimport (check_dts_bounds,
59+ pandas_datetimestruct,
60+ dt64_to_dtstruct, dtstruct_to_dt64)
6161from tslibs.np_datetime import OutOfBoundsDatetime
6262
6363from khash cimport (
@@ -149,17 +149,15 @@ def ints_to_pydatetime(ndarray[int64_t] arr, tz=None, freq=None, box=False):
149149 if value == NPY_NAT:
150150 result[i] = NaT
151151 else :
152- pandas_datetime_to_datetimestruct(
153- value, PANDAS_FR_ns, & dts)
152+ dt64_to_dtstruct(value, & dts)
154153 result[i] = func_create(value, dts, tz, freq)
155154 elif is_tzlocal(tz) or is_fixed_offset(tz):
156155 for i in range (n):
157156 value = arr[i]
158157 if value == NPY_NAT:
159158 result[i] = NaT
160159 else :
161- pandas_datetime_to_datetimestruct(
162- value, PANDAS_FR_ns, & dts)
160+ dt64_to_dtstruct(value, & dts)
163161 dt = create_datetime_from_ts(value, dts, tz, freq)
164162 dt = dt + tz.utcoffset(dt)
165163 if box:
@@ -185,8 +183,7 @@ def ints_to_pydatetime(ndarray[int64_t] arr, tz=None, freq=None, box=False):
185183 # represented in single object.
186184 new_tz = tz
187185
188- pandas_datetime_to_datetimestruct(
189- value + deltas[pos], PANDAS_FR_ns, & dts)
186+ dt64_to_dtstruct(value + deltas[pos], & dts)
190187 result[i] = func_create(value, dts, new_tz, freq)
191188 else :
192189 for i in range (n):
@@ -195,7 +192,7 @@ def ints_to_pydatetime(ndarray[int64_t] arr, tz=None, freq=None, box=False):
195192 if value == NPY_NAT:
196193 result[i] = NaT
197194 else :
198- pandas_datetime_to_datetimestruct (value, PANDAS_FR_ns , & dts)
195+ dt64_to_dtstruct (value, & dts)
199196 result[i] = func_create(value, dts, None , freq)
200197
201198 return result
@@ -698,7 +695,7 @@ class Timestamp(_Timestamp):
698695 value += value - value_tz
699696
700697 # setup components
701- pandas_datetime_to_datetimestruct (value, PANDAS_FR_ns , & dts)
698+ dt64_to_dtstruct (value, & dts)
702699 dts.ps = self .nanosecond * 1000
703700
704701 # replace
@@ -1811,7 +1808,7 @@ def _test_parse_iso8601(object ts):
18111808 obj = _TSObject()
18121809
18131810 _string_to_dts(ts, & obj.dts, & out_local, & out_tzoffset)
1814- obj.value = pandas_datetimestruct_to_datetime(PANDAS_FR_ns, & obj.dts)
1811+ obj.value = dtstruct_to_dt64( & obj.dts)
18151812 check_dts_bounds(& obj.dts)
18161813 if out_local == 1 :
18171814 obj.tzinfo = pytz.FixedOffset(out_tzoffset)
@@ -1984,7 +1981,7 @@ def format_array_from_datetime(ndarray[int64_t] values, object tz=None,
19841981 result[i] = na_rep
19851982 elif basic_format:
19861983
1987- pandas_datetime_to_datetimestruct (val, PANDAS_FR_ns , & dts)
1984+ dt64_to_dtstruct (val, & dts)
19881985 res = ' %d -%.2d -%.2d %.2d :%.2d :%.2d ' % (dts.year,
19891986 dts.month,
19901987 dts.day,
@@ -3792,7 +3789,7 @@ cdef inline int64_t _normalized_stamp(pandas_datetimestruct *dts) nogil:
37923789 dts.sec = 0
37933790 dts.us = 0
37943791 dts.ps = 0
3795- return pandas_datetimestruct_to_datetime(PANDAS_FR_ns, dts)
3792+ return dtstruct_to_dt64( dts)
37963793
37973794
37983795def dates_normalized (ndarray[int64_t] stamps , tz = None ):
@@ -3910,13 +3907,12 @@ def shift_months(int64_t[:] dtindex, int months, object day=None):
39103907 out[i] = NPY_NAT
39113908 continue
39123909
3913- pandas_datetime_to_datetimestruct(dtindex[i],
3914- PANDAS_FR_ns, & dts)
3910+ dt64_to_dtstruct(dtindex[i], & dts)
39153911 dts.year = _year_add_months(dts, months)
39163912 dts.month = _month_add_months(dts, months)
39173913
39183914 dts.day = min (dts.day, days_in_month(dts))
3919- out[i] = pandas_datetimestruct_to_datetime(PANDAS_FR_ns, & dts)
3915+ out[i] = dtstruct_to_dt64( & dts)
39203916 elif day == ' start' :
39213917 roll_check = False
39223918 if months <= 0 :
@@ -3928,8 +3924,7 @@ def shift_months(int64_t[:] dtindex, int months, object day=None):
39283924 out[i] = NPY_NAT
39293925 continue
39303926
3931- pandas_datetime_to_datetimestruct(dtindex[i],
3932- PANDAS_FR_ns, & dts)
3927+ dt64_to_dtstruct(dtindex[i], & dts)
39333928 months_to_roll = months
39343929
39353930 # offset semantics - if on the anchor point and going backwards
@@ -3941,7 +3936,7 @@ def shift_months(int64_t[:] dtindex, int months, object day=None):
39413936 dts.month = _month_add_months(dts, months_to_roll)
39423937 dts.day = 1
39433938
3944- out[i] = pandas_datetimestruct_to_datetime(PANDAS_FR_ns, & dts)
3939+ out[i] = dtstruct_to_dt64( & dts)
39453940 elif day == ' end' :
39463941 roll_check = False
39473942 if months > 0 :
@@ -3953,8 +3948,7 @@ def shift_months(int64_t[:] dtindex, int months, object day=None):
39533948 out[i] = NPY_NAT
39543949 continue
39553950
3956- pandas_datetime_to_datetimestruct(dtindex[i],
3957- PANDAS_FR_ns, & dts)
3951+ dt64_to_dtstruct(dtindex[i], & dts)
39583952 months_to_roll = months
39593953
39603954 # similar semantics - when adding shift forward by one
@@ -3966,7 +3960,7 @@ def shift_months(int64_t[:] dtindex, int months, object day=None):
39663960 dts.month = _month_add_months(dts, months_to_roll)
39673961
39683962 dts.day = days_in_month(dts)
3969- out[i] = pandas_datetimestruct_to_datetime(PANDAS_FR_ns, & dts)
3963+ out[i] = dtstruct_to_dt64( & dts)
39703964 else :
39713965 raise ValueError (" day must be None, 'start' or 'end'" )
39723966
0 commit comments