From: Scott Gasch Date: Sun, 11 Dec 2022 20:02:25 +0000 (-0800) Subject: Make argparse utils' valid_date work with the default format of UNIX date. X-Git-Url: https://wannabe.guru.org/gitweb/?a=commitdiff_plain;h=b57b6091821ccf7d32c7c1b4c2691cdc4a48f5b0;hp=f3173f6a537d77bbf1178d467b9f74bfe7765817;p=pyutils.git Make argparse utils' valid_date work with the default format of UNIX date. --- diff --git a/src/pyutils/argparse_utils.py b/src/pyutils/argparse_utils.py index 765f30a..0ce429f 100644 --- a/src/pyutils/argparse_utils.py +++ b/src/pyutils/argparse_utils.py @@ -370,6 +370,9 @@ def valid_datetime(txt: str) -> datetime.datetime: >>> valid_datetime('6/5/2021 3:01:02') datetime.datetime(2021, 6, 5, 3, 1, 2) + >>> valid_datetime('Sun Dec 11 11:50:00 PST 2022') + datetime.datetime(2022, 12, 11, 11, 50) + .. note:: Because this code uses an English date-expression parsing grammar internally, much more complex datetimes can be expressed in free form. @@ -385,6 +388,13 @@ def valid_datetime(txt: str) -> datetime.datetime: dt = to_datetime(txt) if dt is not None: return dt + + # Don't choke on the default format of unix date. + try: + return datetime.datetime.strptime(txt, "%a %b %d %H:%M:%S %Z %Y") + except Exception: + pass + msg = f"Cannot parse argument as datetime: {txt}" logger.error(msg) raise argparse.ArgumentTypeError(msg)