したがって、Python 3 では、.isoformat() を使用して ISO 8601 日付を生成できますが、Python 独自の datetime ディレクティブが適切に一致しないため、isoformat() によって作成された文字列を datetime オブジェクトに戻すことはできません。つまり、05:00 (.isoformat() によって生成される) ではなく、%z = 0500 です。
例えば:
>>> strDate = d.isoformat()
>>> strDate
'2015-02-04T20:55:08.914461+00:00'
>>> objDate = datetime.strptime(strDate,"%Y-%m-%dT%H:%M:%S.%f%z")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python34\Lib\_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "C:\Python34\Lib\_strptime.py", line 337, in _strptime
(data_string, format))
ValueError: time data '2015-02-04T20:55:08.914461+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
Python の strptime ドキュメントから: ( https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior )
%z +HHMM または -HHMM 形式の UTC オフセット (オブジェクトが単純な場合は空の文字列)。(空)、+0000、-0400、+1030
要するに、Python は独自の文字列フォーマット ディレクティブにも従いません。
Python では datetime がすでにひどいものであることは知っていますが、これは本当に理不尽を超えて、単純な愚かさの世界に入り込んでいます。
これは真実ではないと教えてください。