def to_datetime(arg, errors='ignore', dayfirst=False, box=True): """ Convert argument to datetime Parameters ---------- arg : string, datetime, array of strings (with possible NAs) errors : {'ignore', 'raise'}, default 'ignore' Errors are ignored by default (values left untouched) Returns ------- ret : datetime if parsing succeeded """ from pandas.core.series import Series from pandas.tseries.index import DatetimeIndex if arg is None: return arg elif isinstance(arg, datetime): return arg elif isinstance(arg, Series): values = lib.array_to_datetime(com._ensure_object(arg.values), raise_=errors == 'raise', dayfirst=dayfirst) return Series(values, index=arg.index, name=arg.name) elif isinstance(arg, (np.ndarray, list)): if isinstance(arg, list): arg = np.array(arg, dtype='O') result = lib.array_to_datetime(com._ensure_object(arg), raise_=errors == 'raise', dayfirst=dayfirst) if com.is_datetime64_dtype(result) and box: result = DatetimeIndex(result) return result try: if not arg: return arg return _dtparser.parse(arg, dayfirst=dayfirst) except Exception: if errors == 'raise': raise return arg
def _convert_f(arg): arg = com._ensure_object(arg) try: result = lib.array_to_datetime(arg, raise_=errors == 'raise', utc=utc, dayfirst=dayfirst) if com.is_datetime64_dtype(result) and box: result = DatetimeIndex(result, tz='utc' if utc else None) return result except ValueError, e: try: values, tz = lib.datetime_to_datetime64(arg) return DatetimeIndex._simple_new(values, None, tz=tz) except (ValueError, TypeError): raise e