- def parse_date(date_str: str) -> Optional[datetime.datetime]:
- retval = None
- try:
- _ = date_str.get("date")
- if _:
- retval = datetime.datetime.strptime(_, "%Y-%m-%d")
- else:
- _ = date_str.get("dateTime")
- if _:
- retval = datetime.datetime.strptime(_[:-6], "%Y-%m-%dT%H:%M:%S")
- return retval
- except:
- pass
+ def parse_date(date: Any) -> Optional[datetime.datetime]:
+ if isinstance(date, datetime.datetime):
+ return date
+ elif isinstance(date, dict):
+ if "dateTime" in date:
+ d = date["dateTime"]
+ dt = parse(d)
+ if dt.tzinfo is None:
+ dt = dt.replace(tzinfo=None).astimezone(
+ tz=pytz.timezone("US/Pacific")
+ )
+ return dt
+ elif "date" in date:
+ d = date["date"]
+ dt = datetime.datetime.strptime(d, "%Y-%m-%d")
+ dt = dt.replace(tzinfo=None).astimezone(tz=pytz.timezone("US/Pacific"))
+ return dt
+ print(f"Not sure what to do with this {date} ({type(date)}), help?!")