Python UTC datetime オブジェクトの ISO 形式に Z (Zulu またはゼロオフセット) が含まれていません 質問する

Python UTC datetime オブジェクトの ISO 形式に Z (Zulu またはゼロオフセット) が含まれていません 質問する

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=' ')

見る:日時、Python 標準ライブラリ

オプション:strftime()

または、strftime同じ効果を得るために以下を使用することもできます:

In [4]: d.strftime('%Y-%m-%dT%H:%M:%SZ')
Out[4]: '2014-12-10T12:00:00Z'

注: このオプションは、指定された日付が UTC であることが分かっている場合にのみ機能します。

見る:datetime.strftime()


追加: 人間が読めるタイムゾーン

さらに、タイムゾーン フラグ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'

おすすめ記事