Módulo Zoneinfo de Python

El módulo zoneinfo proporciona soporte para zonas horarias IANA en objetos datetime.

El módulo se añadió en Python 3.9.

from datetime import datetime
from zoneinfo import ZoneInfo

Usa zoneinfo cuando necesites zonas horarias reales como Asia/Shanghai, Europe/London o America/New_York.

Crear datetimes con zona horaria

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

El valor tzinfo convierte el datetime en un objeto con zona horaria. Esto es más seguro que trabajar con un datetime ingenuo cuando los usuarios están en distintos países.

Convertir entre zonas horarias

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

La fecha cambió porque las 1:00 UTC del 13 de mayo de 2025 todavía eran la noche del 12 de mayo en Nueva York.

Ver la clave de la zona horaria

El atributo key almacena el nombre de la zona horaria IANA.

from zoneinfo import ZoneInfo

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

Enlaces relacionados