@@ -238,28 +238,31 @@ def _convert_listlike_datetimes(arg, box, format, name=None, tz=None,
238
238
239
239
result = None
240
240
tz_parsed = None
241
- try :
242
- if format is not None :
241
+
242
+ if format is not None :
243
+ try :
243
244
result = _parse_with_format (arg , tz , name , box , format ,
244
245
errors , exact , infer_datetime_format )
246
+ except ValueError as e :
247
+ return _parse_fallback (arg , name , tz , e )
248
+
249
+ if result is not None :
250
+ return _maybe_box_date_results (result , box , tz , name , tz_parsed )
245
251
246
- if result is None :
247
- assert format is None or infer_datetime_format
248
- result , tz_parsed = tslib .array_to_datetime (
249
- arg ,
250
- errors = errors ,
251
- utc = tz == 'utc' ,
252
- dayfirst = dayfirst ,
253
- yearfirst = yearfirst ,
254
- require_iso8601 = require_iso8601
255
- )
252
+ assert result is None
253
+ assert format is None or infer_datetime_format
256
254
255
+ try :
256
+ result , tz_parsed = tslib .array_to_datetime (
257
+ arg ,
258
+ errors = errors ,
259
+ utc = tz == 'utc' ,
260
+ dayfirst = dayfirst ,
261
+ yearfirst = yearfirst ,
262
+ require_iso8601 = require_iso8601
263
+ )
257
264
except ValueError as e :
258
- try :
259
- values , tz = conversion .datetime_to_datetime64 (data )
260
- return DatetimeIndex ._simple_new (values , name = name , tz = tz )
261
- except (ValueError , TypeError ):
262
- raise e
265
+ return _parse_fallback (arg , name , tz , e )
263
266
else :
264
267
return _maybe_box_date_results (result , box , tz , name , tz_parsed )
265
268
@@ -329,6 +332,35 @@ def _parse_with_format(data, tz, name, box, fmt,
329
332
return result
330
333
331
334
335
+ def _parse_fallback (data , name , tz , err ):
336
+ """
337
+ If a ValueError is raised by either _parse_with_format or
338
+ array_to_datetime, try to interpret the data as datetime objects.
339
+
340
+ Parameters
341
+ ----------
342
+ data : np.ndarray[object]
343
+ name : object
344
+ Name to attach to returned DatetimeIndex
345
+ tz : None, str, or tzinfo object
346
+ err : ValueError instance
347
+
348
+ Returns
349
+ -------
350
+ DatetimeIndex
351
+
352
+ Raises
353
+ ------
354
+ ValueError : if data cannot be interpreted as datetime objects.
355
+ """
356
+ from pandas import DatetimeIndex
357
+ try :
358
+ values , tz = conversion .datetime_to_datetime64 (data )
359
+ return DatetimeIndex ._simple_new (values , name = name , tz = tz )
360
+ except (ValueError , TypeError ):
361
+ raise err
362
+
363
+
332
364
def _maybe_box_date_results (result , box , tz , name , tz_parsed = None ):
333
365
"""
334
366
If requested, wrap the parsing results in an Index object, DatetimeIndex
0 commit comments