You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

22 lines
681 B

  1. import datetime
  2. import tzlocal
  3. from dateutil import tz
  4. from dateutil.parser import parse as date_parse
  5. def to_dateTime(datetime: datetime.datetime):
  6. """converts a datetime into json format for rest api"""
  7. if not datetime.tzinfo:
  8. datetime = datetime.astimezone()
  9. zone = tzlocal.get_localzone().zone
  10. datetime = datetime.isoformat(timespec="seconds")
  11. return {"timeZone": zone, "dateTime": datetime}
  12. def from_dateTime(dateTime):
  13. """converts to a datetime from json format returned by rest api"""
  14. timezone = tz.gettz(dateTime["timeZone"])
  15. datetime = date_parse(dateTime["dateTime"])
  16. datetime.replace(tzinfo=timezone)
  17. return datetime