Python Zoneinfo モジュール

zoneinfo モジュールは、datetime オブジェクトに IANA タイムゾーンのサポートを提供します。

このモジュールは Python 3.9 で追加されました。

from datetime import datetime
from zoneinfo import ZoneInfo

Asia/ShanghaiEurope/LondonAmerica/New_York のような実在のタイムゾーンが必要なときに zoneinfo を使います。

タイムゾーン対応の datetime を作成する

from datetime import datetime
from zoneinfo import ZoneInfo

meeting = datetime(2025, 5, 13, 9, 0, tzinfo=ZoneInfo('Asia/Shanghai'))
print(meeting.tzname())
print(meeting.utcoffset())
CST
8:00:00

tzinfo の値を指定すると、datetime はタイムゾーン対応になります。ユーザーが異なる国にいる場合、タイムゾーンなしの datetime を扱うより安全です。

タイムゾーン間を変換する

from datetime import datetime
from zoneinfo import ZoneInfo

utc_time = datetime(2025, 5, 13, 1, 0, tzinfo=ZoneInfo('UTC'))
local_time = utc_time.astimezone(ZoneInfo('America/New_York'))
print(local_time.tzname())
print(local_time.hour)
EDT
21

2025 年 5 月 13 日 1:00 UTC は、ニューヨークではまだ 5 月 12 日の夜だったため、日付が変わっています。

タイムゾーンキーを表示する

key 属性には IANA タイムゾーン名が入ります。

from zoneinfo import ZoneInfo

zone = ZoneInfo('Asia/Shanghai')
print(zone.key)
Asia/Shanghai

関連リンク