Как вы несериализуете объект datetime, учитывающий часовой пояс? PYYAML автоматически сохранит их в формате ISO, но при загрузке снимет информацию о часовом поясе. Использование str (my_datetime_object) создает правильную строку ISO, но модуль datetime не имеет чистого способа конвертировать его обратно в объект datetime. (STRFTIME не имеет формат временных зон ISO-совместимый)Unserialize datetime, известное как Python
dateutil.parser.parse делает что-то странное, что все еще не так:
In [113]: x
Out[113]: datetime.datetime(2014, 2, 15, 21, 58, 25, 866385, tzinfo=<DstTzInfo 'Europe/Athens' EET+2:00:00 STD>)
In [114]: str(x)
Out[114]: '2014-02-15 21:58:25.866385+02:00'
In [115]: dateutil.parser.parse(str(x))
Out[115]: datetime.datetime(2014, 2, 15, 21, 58, 25, 866385, tzinfo=tzoffset(None, 7200))
Это правильный результат. '7200 = 2 * 60 * 60 = hour_offset * 60 * минут/час * 60 * секунд/минут'. Он не может знать, что вы находитесь в Афине, поскольку это строка, и информация теряется, когда она не отображается в строке. Вам понадобится формат, который также позволяет городу. – User
Что вы подразумеваете под «unserialize объект datetime, поддерживающий часовой пояс»? Вы хотите преобразовать его в известный часовой пояс или просто вывести его как строку? –
Возможный дубликат [Как перевести строку даты и времени ISO 8601 в объект даты и времени Python?] (Http://stackoverflow.com/questions/969285/how-do-i-translate-a-iso-8601-datetime- string-to-a-python-datetime-object) – Jacinda