1. ホーム
  2. python

[解決済み] なぜdatetime.datetime.utcnow()はタイムゾーン情報を含んでいないのですか?

2022-03-14 02:36:50

質問

datetime.datetime.utcnow()

なぜ、この datetime はタイムゾーン情報を持たないので、明示的にUTCの datetime ?

を含むと予想されます。 tzinfo .

解決方法は?

つまりタイムゾーンナイーブなので datetime.astimezone

このようにタイムゾーンを指定することができます。

import pytz  # 3rd party: $ pip install pytz

u = datetime.utcnow()
u = u.replace(tzinfo=pytz.utc) #NOTE: it works only with a fixed utc offset

タイムゾーンを変更できるようになりました

print(u.astimezone(pytz.timezone("America/New_York")))

指定されたタイムゾーンの現在時刻を取得するには、tzinfo に datetime.now() を直接指定します。

#!/usr/bin/env python
from datetime import datetime
import pytz # $ pip install pytz

print(datetime.now(pytz.timezone("America/New_York")))

これは、夏時間を含むすべてのタイムゾーンで動作します。つまり、異なる時間に異なるUTCオフセット(非固定UTCオフセット)を持つ可能性があるタイムゾーンで動作します。を使用しないでください。 tz.localize(datetime.now()) -- ローカルタイムがあいまいな場合、サマータイム終了時の移行に失敗する可能性があります。