Módulo Zoneinfo do Python
O módulo zoneinfo fornece suporte a fuso horário IANA para objetos datetime.
O módulo foi adicionado no Python 3.9.
from datetime import datetime
from zoneinfo import ZoneInfo
Use zoneinfo quando precisar de fusos horários reais como Asia/Shanghai, Europe/London ou America/New_York.
Criando datetimes com fuso horário
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
O valor tzinfo torna o datetime ciente do fuso horário. Isso é mais seguro do que trabalhar com um datetime ingênuo quando os usuários estão em países diferentes.
Convertendo entre fusos horários
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
A data mudou porque 1:00 UTC em 13 de maio de 2025 ainda era a noite de 12 de maio em Nova York.
Exibindo a chave do fuso horário
O atributo key armazena o nome do fuso horário IANA.
from zoneinfo import ZoneInfo
zone = ZoneInfo('Asia/Shanghai')
print(zone.key)
Asia/Shanghai