Python 3.9+zoneinfoпонятие
zoneinfo.ZoneInfo
часовые пояса
Часовой пояс из базы IANA по ключу вроде 'Europe/Moscow', учитывающий летнее время и исторические изменения.
Синтаксис
zoneinfo.ZoneInfo(key)
Передавайте его в tzinfo= или astimezone(), а не pytz-способом localize. Объекты кешируются: ZoneInfo(k) is ZoneInfo(k) — True. На Windows системной базы нет: без пакета tzdata (pip install tzdata) любой ключ даёт ZoneInfoNotFoundError — подкласс KeyError. Для фиксированного смещения без правил достаточно datetime.timezone.
Примеры
from datetime import datetime
from zoneinfo import ZoneInfo
msk = ZoneInfo('Europe/Moscow')
dt = datetime(2024, 1, 15, 12, 0, tzinfo=msk)
print(dt.utcoffset()) # → 3:00:00
print(dt.astimezone(ZoneInfo('UTC'))) # → 2024-01-15 09:00:00+00:00
print(ZoneInfo('Europe/Moscow') is msk) # → True
from zoneinfo import ZoneInfo, ZoneInfoNotFoundError
try:
ZoneInfo('Mars/Base')
except ZoneInfoNotFoundError as e:
print(isinstance(e, KeyError)) # → True
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности