CodeGym /Cursos /Python SELF ES /Introducción al trabajo con zonas horarias

Introducción al trabajo con zonas horarias

Python SELF ES
Nivel 40 , Lección 2
Disponible

1. La importancia de las zonas horarias

Las zonas horarias no son solo una excusa conveniente para un poco de jet lag en los vuelos internacionales. Juegan un papel clave en la programación, especialmente cuando se trata de aplicaciones y servicios globales. Rastrear el tiempo según las zonas horarias es necesario para almacenar y mostrar datos, planificar tareas, coordinar equipos en todo el mundo y más. Sin tener en cuenta las zonas horarias, tu código podría generar una verdadera anomalía temporal, ¡y nadie quiere eso, verdad?

¿Qué es una zona horaria?

Una zona horaria es una región en la que todos los relojes muestran la misma hora estándar. Cada zona horaria se define por su desplazamiento respecto al Tiempo Universal Coordinado (UTC). Por ejemplo, si en tu zona la hora es dos horas más que UTC, tu zona horaria se designa como UTC+2.

Conversión de tiempo entre zonas

Cuando trabajamos con datos que contienen tiempo, a menudo surge la necesidad de adaptar el tiempo de una zona a otra. Por ejemplo, planeaste el lanzamiento de una campaña de marketing en un servidor que opera según la hora UTC, pero deseas que ocurra exactamente a las 9 a.m. en Nueva York (UTC-5). Ahí es donde entran las zonas horarias.

Para facilitar este proceso, Python proporciona la biblioteca pytz, que ayuda a convertir el tiempo entre zonas. Vamos a echar un vistazo a algunos ejemplos de cómo usarla.

2. Trabajando con zonas horarias en Python

Usar pytz para manejar zonas horarias

Una vez instalada, puedes empezar a experimentar con pytz. Importemos la biblioteca junto con datetime:

Python

from datetime import datetime
import pytz

Obtener la hora actual en una zona horaria específica

Veamos qué hora es ahora en Nueva York:

Python

# Creamos un objeto de zona horaria para Nueva York
ny_tz = pytz.timezone('America/New_York')

# Obtenemos la hora actual en UTC
utc_now = datetime.now(pytz.utc)

# Convertimos la hora UTC a la hora de Nueva York
ny_time = utc_now.astimezone(ny_tz)

# Imprimimos el resultado
print("Hora actual en Nueva York:", ny_time)

Este código convierte la hora actual en UTC a la hora de Nueva York, que luego se imprime en un formato legible.

Conversión de tiempo entre zonas

Imagina que tienes la fecha de un evento importante en Londres, y necesitas saber cuándo ocurrirá en la hora de Tokio.

Python

# Hora del evento en Londres
event_time = datetime(2023, 10, 31, 15, 0, 0, tzinfo=pytz.utc).astimezone(pytz.timezone('Europe/London'))

# Convertimos la hora a Tokio
tokyo_tz = pytz.timezone('Asia/Tokyo')
event_time_tokyo = event_time.astimezone(tokyo_tz)

print("Hora del evento en Tokio:", event_time_tokyo)

3. Trabajo avanzado con zonas horarias en Python

Lista de zonas horarias disponibles

Con pytz.all_timezones puedes obtener una lista de todas las zonas horarias soportadas por la biblioteca pytz.

Python

import pytz

print("Ejemplo de zonas horarias:")
for timezone in pytz.all_timezones[:5]:  # Mostrar las primeras 5 zonas horarias
    print(timezone)

Salida (parcial):

Ejemplo de zonas horarias:
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara

Establecer una zona horaria y crear un objeto `datetime`

Con pytz.timezone() puedes establecer la zona horaria deseada para una fecha y hora. Veamos cómo crear un objeto datetime con una zona horaria específica.

Python

from datetime import datetime
import pytz

# Elegimos la zona horaria "Europe/Moscow"
moscow_timezone = pytz.timezone("Europe/Moscow")
current_time_moscow = datetime.now(moscow_timezone)
print("Hora actual en Moscú:", current_time_moscow)

Consideración del horario de verano

Uno de los aspectos importantes de las zonas horarias es la consideración del horario de verano, que se automatiza en pytz. Por ejemplo, si trabajas con la hora en Estados Unidos, la biblioteca aplica automáticamente el ajuste de horario de verano, si está activo.

Python

from datetime import datetime
import pytz

# Establecemos una fecha que cae dentro del periodo del horario de verano
date_in_summer = datetime(2024, 7, 1, 12, 0, 0)
ny_timezone = pytz.timezone("America/New_York")
ny_summer_time = ny_timezone.localize(date_in_summer)
print("Hora de verano en Nueva York:", ny_summer_time)

# Establecemos una fecha fuera del horario de verano
date_in_winter = datetime(2024, 12, 1, 12, 0, 0)
ny_winter_time = ny_timezone.localize(date_in_winter)
print("Hora de invierno en Nueva York:", ny_winter_time)

Aquí pytz determina automáticamente que el 1 de julio está dentro del periodo del horario de verano, y aplica el ajuste de una hora.

Funciones útiles para trabajar con zonas horarias

  • Obtener todas las zonas horarias: pytz.all_timezones devuelve una lista de todas las zonas horarias.
  • Conversión a UTC: El método astimezone(pytz.utc) convierte cualquier hora a UTC.
  • Conversión de tiempo en formato string a datetime: Usa datetime.strptime() para convertir un tiempo en formato string a datetime y agregar una zona horaria.
  • Actualizar zonas horarias: Para actualizar las zonas horarias utiliza pytz.update().
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION