Python でdatetime.utcnow().isoformat()するとタイムゾーンが無い
ISO8601DateTimeで日付を渡すとき、pythonでハマったというか。
>>> from datetime import datetime
>>> print datetime.utcnow().isoformat()
2016-06-17T04:00:50.691886
UTCなのに末尾に Z
もなければ +00:00
もつかない
検証
% python
Python 2.7.11 (default, Mar 10 2016, 20:29:25)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> import pytz
>>> print datetime.utcnow().isoformat()
2016-06-17T04:20:26.483201
>>> print datetime.now(pytz.utc).isoformat()
2016-06-17T04:20:30.915120+00:00
>>>
結論、 utcnow()
はdatetimeのtimezoneを None
で持つので出力されないようです。
now()
でUTCタイムゾーンを明示すると isoformat()
でタイムゾーンが表示されます。