diff --git a/pikatasks/serialization.py b/pikatasks/serialization.py index d73c3c0949323e720b34c349a2854b2bdbaaa0e0..e796f572fdef77688ec26f02f4a626190852e572 100644 --- a/pikatasks/serialization.py +++ b/pikatasks/serialization.py @@ -1,3 +1,4 @@ +import sys import json import datetime import collections @@ -21,6 +22,13 @@ def datetime_to_str(dt): """ if not dt.tzinfo: logger.warning("Naive datetime received by serialize_datetime() and will be treated as local: {dt}. Avoid using naive datetime objects.".format(dt=dt)) + if sys.version_info < (3, 3): + raise RuntimeError("Cannot consume naive datetime in python < 3.3") + elif sys.version_info < (3, 6): + local_tzinfo = datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo + dt = dt.replace(tzinfo=local_tzinfo) + else: + pass # python 3.6+ allows .astimezone() on naive objects utc_dt = dt.astimezone(datetime.timezone.utc) return datetime.datetime.strftime(utc_dt, settings.DATETIME_FORMAT)