如何反序列化時區感知的日期時間對象? PYYAML會自動以ISO格式保存它們,但在加載時會丟棄時區信息。使用str(my_datetime_object)會生成正確的ISO字符串,但日期時間模塊沒有乾淨的方式將其轉換回日期時間對象。 (strftime的無ISO兼容的時區格式)反序列化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 *秒/分鐘。它不知道你在Athen中,因爲這是一個字符串,當信息沒有顯示在字符串中時信息就會丟失。你將需要一個格式,也允許城市。 – User
你是什麼意思「反序列化時區感知日期時間對象」?你想把它轉換成一個已知的時區,或者只是將它輸出爲字符串? –
可能的重複[如何將ISO 8601日期時間字符串轉換爲Python日期時間對象?](http://stackoverflow.com/questions/969285/how-do-i-translate-a-iso-8601-datetime- string-into-python-datetime-object) – Jacinda