1. ホーム
  2. python

[解決済み] デフォルトのタイムゾーンを含む現在のisoformat datetime文字列を取得するには?

2023-07-03 09:47:58

質問

iso 形式に合致する時刻文字列を生成したい。 yyyy-mm-ddThh:mm:ss.ssssss-ZO:NE . は now()utcnow() のクラスメソッドは、ほぼ私の望むとおりになります。

>>> import datetime
>>> #time adjusted for current timezone
>>> datetime.datetime.now().isoformat()
'2010-08-03T03:00:00.000000'
>>> #unadjusted UTC time
>>> datetime.datetime.utcnow().isoformat()
'2010-08-03T10:00:00.000000'
>>>
>>> #How can I do this?
>>> datetime.datetime.magic()
'2010-08-03T10:00:00.000000-07:00'

どのように解決するのですか?

Python 3.2+で現在時刻をUTCで取得する方法です。

>>> from datetime import datetime, timezone
>>> datetime.now(timezone.utc).isoformat()
'2015-01-27T05:57:31.399861+00:00'

Python 3.3+でローカルタイムを取得する。

>>> from datetime import datetime, timezone
>>> datetime.now(timezone.utc).astimezone().isoformat()
'2015-01-27T06:59:17.125448+01:00'

説明 datetime.now(timezone.utc) は、タイムゾーンを意識した datetime オブジェクトを UTC 時刻で生成します。 astimezone() とすると、タイムゾーンを変更する datetime オブジェクトのタイムゾーンを変更し、引数なしで呼ばれた場合はシステムのロケールのタイムゾーンに変更します。タイムゾーンを意識した datetime オブジェクトは自動的に正しい ISO フォーマットを生成します。