1. ホーム
  2. python

[解決済み] UTCで現在の時刻(今)を知るにはどうしたらよいですか?

2022-03-06 02:57:05

質問

Pythonのdatetimeオブジェクト(今から5分を表す)があり、UTCに変換したいと思っています。私はHTTPヘッダーに置くためにRFC 2822フォーマットでそれを出力することを計画していますが、この質問にとってそれが重要であるかどうかはよくわかりません。このサイトでtimeオブジェクトの変換に関する情報を見つけたので、その方が簡単そうですが、今回はtimedeltasを使って調整しているので、どうしてもdatetimeオブジェクトを使いたいのです。

こんな感じでやってみました。

from datetime import datetime, timedelta

now = datetime.now()
fiveMinutesLater = datetime.now() + timedelta(minutes=5)
fiveMinutesLaterUtc = ???

timeやdatetimeモジュールには、私を助けてくれそうなものは何もありません。datetimeオブジェクトを3つか4つの関数に渡せばできそうですが、もっと簡単な方法はないでしょうか。

サードパーティモジュールは使いたくないのですが、それが唯一の合理的な選択であるならば、使ってもよいでしょう。

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

これを実行すると、UTCで素直なdatetimeが得られます(それに5分足すこともできます)。

>>> from datetime import datetime, timedelta
>>> datetime.utcnow()
datetime.datetime(2021, 1, 26, 15, 41, 52, 441598)
>>> datetime.utcnow() + timedelta(minutes=5)
datetime.datetime(2021, 1, 26, 15, 46, 52, 441598)

もしタイムゾーンを意識した datetime オブジェクトを使いたい場合は、 Python 3.2 以降で実行してください。

>>> from datetime import datetime, timezone
>>> datetime.now(timezone.utc)
datetime.datetime(2021, 1, 26, 15, 43, 54, 379421, tzinfo=datetime.timezone.utc)