@@ -90,28 +90,30 @@ cdef inline object parse_delimited_date(object date_string, bint dayfirst,
90
90
buf = get_c_string_buf_and_size(date_string, & length)
91
91
if length == 10 :
92
92
if _is_not_delimiter(buf[2 ]) or _is_not_delimiter(buf[5 ]):
93
- return None
93
+ return None , None
94
94
month = _parse_2digit(buf)
95
95
day = _parse_2digit(buf + 3 )
96
96
year = _parse_4digit(buf + 6 )
97
+ reso = ' day'
97
98
elif length == 7 :
98
99
if _is_not_delimiter(buf[2 ]):
99
- return None
100
+ return None , None
100
101
month = _parse_2digit(buf)
101
102
year = _parse_4digit(buf + 3 )
103
+ reso = ' month'
102
104
else :
103
- return None
105
+ return None , None
104
106
105
107
if month < 0 or day < 0 or year < 0 :
106
108
# some part is not an integer, so it's not a mm/dd/yyyy date
107
- return None
109
+ return None , None
108
110
109
111
if 1 <= month <= MAX_DAYS_IN_MONTH and 1 <= day <= MAX_DAYS_IN_MONTH \
110
112
and (month <= MAX_MONTH or day <= MAX_MONTH):
111
113
if month > MAX_MONTH or (day < MAX_MONTH and dayfirst):
112
114
day, month = month, day
113
115
return PyDateTimeAPI.DateTime_FromDateAndTime(year, month, day,
114
- 0 , 0 , 0 , 0 , tzinfo, PyDateTimeAPI.DateTimeType)
116
+ 0 , 0 , 0 , 0 , tzinfo, PyDateTimeAPI.DateTimeType), reso
115
117
116
118
raise DateParseError(" Invalid date specified (%d /%d )" %
117
119
(month, day))
@@ -140,7 +142,7 @@ def parse_datetime_string(date_string, freq=None, dayfirst=False,
140
142
yearfirst = yearfirst, ** kwargs)
141
143
return dt
142
144
143
- dt = parse_delimited_date(date_string, dayfirst, _DEFAULT_TZINFO)
145
+ dt, _ = parse_delimited_date(date_string, dayfirst, _DEFAULT_TZINFO)
144
146
if dt is not None :
145
147
return dt
146
148
@@ -224,6 +226,10 @@ cdef parse_datetime_string_with_reso(date_string, freq=None, dayfirst=False,
224
226
if not _does_string_look_like_datetime(date_string):
225
227
raise ValueError (' Given date string not likely a datetime.' )
226
228
229
+ parsed, reso = parse_delimited_date(date_string, dayfirst, _DEFAULT_TZINFO)
230
+ if parsed is not None :
231
+ return parsed, parsed, reso
232
+
227
233
try :
228
234
return _parse_dateabbr_string(date_string, _DEFAULT_DATETIME, freq)
229
235
except DateParseError:
0 commit comments