Trabajar con fechas y tiempos en Python puede complicarse, especialmente cuando se trata de manejar zonas horarias, cálculos de intervalos o formatos personalizados.
Aunque datetime
es la biblioteca nativa para este propósito, su uso puede resultar limitado o poco intuitivo en escenarios avanzados.
Pendulum surge como una solución robusta, extendiendo y mejorando las capacidades de datetime
. Su enfoque simplificado y sus características avanzadas hacen que trabajar con fechas sea más eficiente y menos propenso a errores.
En este artículo, exploraremos algunas de las muchas funcionalidades de Pendulum para cubrir casos comunes y avanzados en la gestión de fechas en Python.
Tabla de contenidos
- 1. Crear y manipular fechas
- 2. Conversiones de zonas horarias
- 3. Cálculo de diferencias con diff()
- 4. Diferencias en términos humanos
- 5. Formateo y localización
- 6. Intervalos e iteraciones
- Conclusión
1. Crear y manipular fechas
Pendulum hace que trabajar con fechas sea simple e intuitivo, ya sea creando fechas desde cero, manipulándolas o interpretando cadenas de texto.
Crear fechas con Pendulum
import pendulum
# Obtener la fecha y hora actuales en UTC
now = pendulum.now("UTC")
print(now) # Ejemplo: 2024-12-01 23:03:31.244107+00:00
# Crear una fecha y hora específicas
specific_date = pendulum.datetime(2024, 12, 25, 10, 30, tz="America/New_York")
print(specific_date) # 2024-12-25 10:30:00-05:00
Convertir cadenas de texto con pendulum.parse
El método parse
convierte cadenas de texto en objetos de fecha. Soporta automáticamente zonas horarias y formatos estándar.
# Convertir una fecha básica
parsed_date = pendulum.parse("2024-12-01")
print(parsed_date) # 2024-12-01 00:00:00+00:00
# Convertir una fecha con zona horaria
parsed_date_tz = pendulum.parse("2024-12-01T15:00:00-05:00")
print(parsed_date_tz) # 2024-12-01 15:00:00-05:00
Manipular fechas con add()
y subtract()
Pendulum permite sumar y restar tiempo.
# Sumar tiempo
future_date = specific_date.add(days=5, hours=2)
print(future_date) # 2024-12-30 12:30:00-05:00
# Restar tiempo
past_date = specific_date.subtract(weeks=1, minutes=15)
print(past_date) # 2024-12-18 10:15:00-05:00
2. Conversiones de zonas horarias
Pendulum facilita la conversión entre zonas horarias, resolviendo problemas comunes relacionados con el manejo del tiempo global.
Cambiar a una zona horaria específica
# Convertir una fecha a otra zona horaria
uy_time = specific_date.in_tz("America/Montevideo")
print(uy_time) # 2024-12-25 12:30:00-03:00
Convertir fechas locales a UTC
local_date = pendulum.datetime(2024, 12, 1, 10, 0, tz="America/New_York")
utc_date = local_date.in_tz("UTC")
print(utc_date) # 2024-12-01 15:00:00+00:00
3. Cálculo de diferencias con diff()
Pendulum incluye herramientas intuitivas para calcular diferencias entre fechas.
start_date = pendulum.datetime(2024, 12, 1)
end_date = pendulum.datetime(2024, 12, 31)
# Diferencia en días
days_diff = end_date.diff(start_date).in_days()
print(days_diff) # 30
# Diferencia en horas
hours_diff = end_date.diff(start_date).in_hours()
print(hours_diff) # 720
# Diferencia en semanas
weeks_diff = end_date.diff(start_date).in_weeks()
print(weeks_diff) # 4
4. Diferencias en términos humanos
El método diff_for_humans()
convierte una diferencia de tiempo en una representación amigable para los humanos. Este método genera frases como «hace 3 días» o «en 2 semanas», dependiendo de si la diferencia de tiempo es pasada o futura.
Diferencia respecto al momento actual
# Fecha del momento actual
print(pendulum.now().date()) # 2024-12-01
# Hace cuánto ocurrió algo
past_date = pendulum.datetime(2024, 11, 25)
print(past_date.diff_for_humans()) # "7 days ago"
# Cuánto falta para un evento
future_date = pendulum.datetime(2024, 12, 31)
print(future_date.diff_for_humans()) # "in 4 weeks"
Diferencia entre dos fechas específicas
start_date = pendulum.datetime(2024, 1, 1)
end_date = pendulum.datetime(2024, 12, 1)
print(start_date.diff_for_humans(end_date)) # "11 months before"
print(end_date.diff_for_humans(start_date)) # "11 months after"
5. Formateo y localización
Pendulum facilita el formateo de fechas y soporta múltiples idiomas, lo que lo hace ideal para proyectos internacionales.
Formateo personalizado
# Formateo básico
formatted_date = specific_date.format("YYYY-MM-DD HH:mm:ss")
print(formatted_date) # 2024-12-25 10:30:00
Localización
Pendulum puede formatear fechas en varios idiomas mediante el parámetro locale
del método format()
:
# Mostrar fecha en español
localized_date = specific_date.format("dddd, D [de] MMMM [de] YYYY", locale="es")
print(localized_date) # miércoles, 25 de diciembre de 2024
6. Intervalos e iteraciones
Pendulum permite definir intervalos y recorrer fechas dentro de un rango.
Las unidades admitidas para un rango son: years
, months
, weeks
, days
, hours
, minutes
, seconds
y microseconds
.
Rango de días
# Crear un intervalo de fechas
start = pendulum.datetime(2024, 12, 1)
end = pendulum.datetime(2024, 12, 10)
interval = pendulum.interval(start, end)
# Iterar sobre el intervalo especificando un rango
for date in interval.range('days'):
print(date) # Fechas del 1 al 10 de diciembre
Incrementos flexibles
Pendulum soporta rangos con incrementos personalizados.
# Rango con incrementos de 2 días
for date in interval.range("days", 2):
print(date) # 2024-12-01, 2024-12-03, etc.
Conclusión
Pendulum es una herramienta potente y fácil de usar para manejar fechas en Python. Con su sintaxis intuitiva y capacidades avanzadas, puedes realizar desde tareas básicas como sumar días hasta cálculos complejos de intervalos y manejo de zonas horarias.
Si trabajas en proyectos que requieren precisión y claridad en el manejo de fechas, Pendulum es una opción a tener en cuenta.
Puedes explorar más funcionalidades y opciones en su sitio web.