¿Qué es import zoneinfo en Python y cómo se usa?

| Última modificación: 2 de febrero de 2025 | Tiempo de Lectura: 3 minutos
0
(0)

Imagina que estás desarrollando una aplicación donde los usuarios pueden programar eventos desde diferentes partes del mundo. Todo parece ir bien hasta que notas que los horarios no coinciden y los eventos aparecen desfasados dependiendo de la ubicación del usuario. Aquí es donde entra en juego import zoneinfo, una herramienta integrada en Python que te permite manejar zonas horarias de forma automática y precisa sin necesidad de cálculos manuales.

En este artículo, descubrirás qué es import zoneinfo, cómo funciona y cómo puedes utilizarlo para que tu aplicación maneje correctamente las zonas horarias y los cambios de horario de verano sin complicaciones.

import zoneinfo

¿Qué es import zoneinfo?

Import zoneinfo es un módulo incorporado en Python desde la versión 3.9 que proporciona una implementación basada en la base de datos IANA, la cual contiene información actualizada sobre todas las zonas horarias del mundo. Su integración con datetime permite convertir fácilmente fechas y horas a diferentes zonas horarias sin necesidad de bibliotecas externas.

Podemos comparar import zoneinfo con el sistema de relojes automáticos de un aeropuerto. Mientras que cada viajero puede provenir de un país distinto, los paneles de información muestran automáticamente la hora local sin que el usuario tenga que preocuparse por hacer cálculos. De la misma manera, import zoneinfo se encarga de convertir y gestionar las zonas horarias sin intervención manual.

Algunos de los beneficios de import zoneinfo son:

  • No requiere librerías externas en la mayoría de los sistemas.
  • Se basa en la base de datos IANA, que es actualizada periódicamente.
  • Maneja automáticamente los cambios de horario de verano.
  • Es compatible con datetime, permitiendo conversiones entre zonas horarias de manera sencilla.

¿Cómo usar import zoneinfo en Python?

El uso de import zoneinfo es muy sencillo y se puede integrar fácilmente con objetos datetime.

  • Crear un objeto datetime con zona horaria: Para asignar una zona horaria a un objeto datetime solo necesitas importar ZoneInfo y definir la zona horaria deseada:
from datetime import datetime
from zoneinfo import ZoneInfo

dt = datetime(2025, 2, 1, 12, 0, tzinfo=ZoneInfo("America/New_York"))
print(dt) # 2025-02-01 12:00:00-05:00

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

El resultado muestra la fecha y hora con la zona horaria aplicada.

  • Convertir una fecha de UTC a una zona específica: Si tienes una fecha en UTC y necesitas convertirla a otra zona horaria, puedes hacerlo fácilmente con el método astimezone:
from datetime import timezone

dt_utc = datetime(2025, 2, 1, 12, tzinfo=timezone.utc)
dt_local = dt_utc.astimezone(ZoneInfo("Europe/Madrid"))

print(dt_local) # 2025-02-01 13:00:00+01:00

Este ejemplo convierte la fecha desde UTC a la hora de Madrid, ajustando automáticamente la diferencia horaria.

  • Manejo del horario de verano: Uno de los problemas más comunes al trabajar con zonas horarias es el cambio de horario de verano. Import zoneinfo maneja esto automáticamente:
from datetime import timedelta

dt = datetime(2025, 10, 25, 12, tzinfo=ZoneInfo("America/New_York"))
dt_add = dt + timedelta(days=1)

print(dt) # 2025-10-25 12:00:00-04:00 (EDT)
print(dt_add) # 2025-10-26 12:00:00-05:00 (EST)

Aquí se muestra cómo la conversión se realiza automáticamente cuando el horario de verano termina.

¿Cómo obtener la lista de zonas horarias disponibles?

Si quieres conocer las zonas horarias que puedes usar con import zoneinfo, puedes listarlas con la función available_timezones.

from zoneinfo import available_timezones

print(available_timezones())

Esto imprimirá un conjunto con todas las zonas horarias disponibles en tu sistema.

Configuración de los datos de zona horaria

El módulo zoneinfo obtiene las zonas horarias desde la base de datos del sistema, pero si tu sistema no cuenta con esta información puedes instalar la librería tzdata desde PyPI:

pip install tzdata

Esto garantiza que import zoneinfo funcione correctamente en entornos como Windows donde no siempre está disponible la base de datos IANA.

Errores comunes y cómo evitarlos

  • No encontrar la zona horaria: Si intentas usar una zona horaria que no está disponible en tu sistema recibirás un error:
from zoneinfo import ZoneInfo, ZoneInfoNotFoundError

try:
tz = ZoneInfo("Zona/Ficticia")
except ZoneInfoNotFoundError:
print("Error: Zona horaria no encontrada.")

Para evitarlo, asegúrate de que la zona horaria que usas está en la base de datos IANA o instala tzdata.

  • Problemas con pickle y serialización: Los objetos ZoneInfo creados desde archivos no pueden ser serializados con pickle, lo que puede generar errores si intentas guardarlos y recuperarlos en otro momento:
import pickle
from zoneinfo import ZoneInfo

tz = ZoneInfo("Europe/Madrid")

with open("zona.pkl", "wb") as f:
pickle.dump(tz, f)

# Error: ZoneInfo creado desde archivo no se puede serializar.

Para evitar esto, es mejor almacenar el nombre de la zona horaria y recrear el objeto ZoneInfo cuando sea necesario.

Si quieres aprender más sobre cómo manejar fechas, tiempos y otras tecnologías avanzadas en Python, en KeepCoding tenemos el bootcamp de programación inicial para ti. No solo aprenderás a dominar herramientas como import zoneinfo, sino que en pocos meses te prepararás para entrar en el sector tecnológico, una industria con alta demanda, excelentes salarios y estabilidad laboral. Es tu oportunidad para transformar tu futuro y convertirte en un experto en tecnología.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a programar desde cero

Full Stack JR. Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado