@@ -0,0 +1,26 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import datetime as dt
|
||||
|
||||
from dateutil import parser as date_parser
|
||||
|
||||
|
||||
def parse_datetime(value: str | None) -> dt.datetime | None:
|
||||
if not value:
|
||||
return None
|
||||
try:
|
||||
return date_parser.parse(value)
|
||||
except (TypeError, ValueError, OverflowError):
|
||||
try:
|
||||
return date_parser.parse(value, fuzzy=True)
|
||||
except (TypeError, ValueError, OverflowError):
|
||||
return None
|
||||
|
||||
|
||||
def normalize_date(value: str | None) -> str:
|
||||
parsed = parse_datetime(value)
|
||||
if parsed is None:
|
||||
return ""
|
||||
if parsed.tzinfo is None or parsed.utcoffset() is None:
|
||||
return parsed.strftime("%Y-%m-%d %H:%M:%S")
|
||||
return parsed.isoformat(sep=" ", timespec="seconds")
|
||||
Reference in New Issue
Block a user