Python 2.7 では、JavaScript とは異なり、UTC datetime オブジェクトの isoformat 文字列の末尾に Z 文字 (Zulu またはゼロ オフセット) が含まれないのはなぜですか?
>>> datetime.datetime.utcnow().isoformat()
'2013-10-29T09:14:03.895210'
一方JavaScriptでは
>>> console.log(new Date().toISOString());
2013-10-29T09:38:41.341Z
ベストアンサー1
オプション:isoformat()
Pythonはdatetime
サポートしていません軍事タイムゾーンUTC の 'Z' サフィックスなどのサフィックス。次の簡単な文字列置換で解決します。
In [1]: import datetime
In [2]: d = datetime.datetime(2014, 12, 10, 12, 0, 0)
In [3]: str(d).replace('+00:00', 'Z')
Out[3]: '2014-12-10 12:00:00Z'
str(d)
本質的に同じであるd.isoformat(sep=' ')
オプション:strftime()
または、strftime
同じ効果を得るために以下を使用することもできます:
In [4]: d.strftime('%Y-%m-%dT%H:%M:%SZ')
Out[4]: '2014-12-10T12:00:00Z'
注: このオプションは、指定された日付が UTC であることが分かっている場合にのみ機能します。
追加: 人間が読めるタイムゾーン
さらに、タイムゾーン フラグpytz
を使用して、人間が判読できるタイムゾーン情報を表示することもできますstrftime
%Z
。
In [5]: import pytz
In [6]: d = datetime.datetime(2014, 12, 10, 12, 0, 0, tzinfo=pytz.utc)
In [7]: d
Out[7]: datetime.datetime(2014, 12, 10, 12, 0, tzinfo=<UTC>)
In [8]: d.strftime('%Y-%m-%d %H:%M:%S %Z')
Out[8]: '2014-12-10 12:00:00 UTC'