Python Zoneinfo Module
The zoneinfo module provides IANA time zone support for datetime objects.
The module was added in Python 3.9.
from datetime import datetime
from zoneinfo import ZoneInfo
Use zoneinfo when you need real-world time zones such as Asia/Shanghai, Europe/London, or America/New_York.
Creating timezone-aware datetimes
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
The tzinfo value makes the datetime timezone-aware. This is safer than working with a naive datetime when users are in different countries.
Converting between time zones
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
The date changed because 1:00 UTC on May 13, 2025 was still the evening of May 12 in New York.
Listing the time zone key
The key attribute stores the IANA time zone name.
from zoneinfo import ZoneInfo
zone = ZoneInfo('Asia/Shanghai')
print(zone.key)
Asia/Shanghai