Вот более полная функция для преобразования или приведения временной метки obj в utc.Если оно достигает исключения, это означает, что отметка времени не локализована.Поскольку рекомендуется всегда работать в коде UTC в коде, эта функция очень полезна на начальном уровне с сохранением.
def convert_or_coerce_timestamp_to_utc(timeobj):
out = timeobj
try:
out = timeobj.astimezone(pytz.utc) # aware object can be in any timezone
except (ValueError,TypeError) as exc: # naive
out = timeobj.replace(tzinfo=pytz.utc)
return out
Небольшое дополнение из 'try catch' в ответе JF Sebastian - это дополнительное условие перехвата, без которого функция не поймает не все наивные случаи.