Volver a la página principal
domingo 28 julio 2024
21

Cómo Trabajar con Fechas en Python

Introducción a la Biblioteca datetime

La biblioteca datetime es una de las herramientas más potentes en Python para trabajar con fechas y horas. Esta biblioteca proporciona clases para manipular fechas y tiempos de manera sencilla y eficiente.

Creación de Objetos de Fecha y Hora

Para comenzar a trabajar con fechas y horas en Python, primero debemos importar la biblioteca datetime:

import datetime

Creación de una Fecha

Podemos crear un objeto de fecha utilizando la clase date:

fecha = datetime.date(2024, 7, 28)
print(fecha)  # Salida: 2024-07-28

Creación de una Hora

De manera similar, podemos crear un objeto de hora utilizando la clase time:

hora = datetime.time(14, 30, 0)
print(hora)  # Salida: 14:30:00

Creación de una Fecha y Hora

Para combinar fecha y hora, utilizamos la clase datetime:

fecha_hora = datetime.datetime(2024, 7, 28, 14, 30, 0)
print(fecha_hora)  # Salida: 2024-07-28 14:30:00

Manipulación de Fechas y Horas

La biblioteca datetime permite realizar operaciones aritméticas con fechas y horas.

Sumar y Restar Tiempo

Podemos sumar o restar días, horas, minutos, etc., utilizando timedelta:

from datetime import timedelta

# Sumar 7 días
nueva_fecha = fecha + timedelta(days=7)
print(nueva_fecha)  # Salida: 2024-08-04

# Restar 2 horas
nueva_hora = fecha_hora - timedelta(hours=2)
print(nueva_hora)  # Salida: 2024-07-28 12:30:00

Comparación de Fechas

Las fechas y horas pueden ser comparadas utilizando los operadores habituales (<, >, <=, >=, ==, !=):

fecha1 = datetime.date(2024, 7, 28)
fecha2 = datetime.date(2023, 7, 28)

print(fecha1 > fecha2)  # Salida: True
print(fecha1 == fecha2)  # Salida: False

Formateo de Fechas y Horas

Para convertir objetos de fecha y hora a cadenas de texto, y viceversa, utilizamos los métodos strftime y strptime.

Convertir Fecha a Cadena

El método strftime permite especificar el formato de la cadena de salida:

fecha_formateada = fecha_hora.strftime("%d/%m/%Y %H:%M:%S")
print(fecha_formateada)  # Salida: 28/07/2024 14:30:00

Convertir Cadena a Fecha

El método strptime permite convertir una cadena de texto a un objeto de fecha:

fecha_cadena = "28/07/2024 14:30:00"
fecha_convertida = datetime.datetime.strptime(fecha_cadena, "%d/%m/%Y %H:%M:%S")
print(fecha_convertida)  # Salida: 2024-07-28 14:30:00

Uso de la Biblioteca time

La biblioteca time proporciona funciones para trabajar con el tiempo a un nivel más bajo, incluyendo la medición del tiempo de ejecución y la conversión entre diferentes representaciones del tiempo.

Obtener el Tiempo Actual

Para obtener el tiempo actual en segundos desde la época (el 1 de enero de 1970), utilizamos time.time():

import time

tiempo_actual = time.time()
print(tiempo_actual)  # Salida: 1690000000.0 (ejemplo)

Dormir por un Tiempo Específico

La función sleep permite pausar la ejecución del programa por un tiempo específico en segundos:

print("Esperando 3 segundos...")
time.sleep(3)
print("¡Hecho!")

Formatear Tiempos

La biblioteca time también proporciona funciones para formatear tiempos:

tiempo_struct = time.localtime(tiempo_actual)
tiempo_formateado = time.strftime("%Y-%m-%d %H:%M:%S", tiempo_struct)
print(tiempo_formateado)  # Salida: 2024-07-28 14:30:00 (ejemplo)

Calendarios con la Biblioteca calendar

La biblioteca calendar permite trabajar con calendarios, generando listas y matrices de fechas.

Mostrar un Calendario Mensual

Podemos imprimir un calendario para un mes específico utilizando calendar.month:

import calendar

calendario_julio = calendar.month(2024, 7)
print(calendario_julio)

Determinar Si un Año es Bisiesto

La función isleap nos dice si un año es bisiesto:

es_bisiesto = calendar.isleap(2024)
print(es_bisiesto)  # Salida: True

Manejo de Zonas Horarias con pytz

Para trabajar con zonas horarias, la biblioteca pytz es una herramienta muy útil.

Convertir Entre Zonas Horarias

Podemos convertir una fecha y hora a diferentes zonas horarias:

import pytz

# Fecha y hora en UTC
utc = pytz.utc
fecha_hora_utc = datetime.datetime.now(utc)
print(fecha_hora_utc)

# Convertir a otra zona horaria
zona_horaria = pytz.timezone("America/New_York")
fecha_hora_nueva_york = fecha_hora_utc.astimezone(zona_horaria)
print(fecha_hora_nueva_york)

Listar Todas las Zonas Horarias

Para listar todas las zonas horarias disponibles en pytz:

zonas_horarias = pytz.all_timezones
print(zonas_horarias)

Manejo de Fechas Relativas con dateutil

La biblioteca dateutil facilita el manejo de fechas relativas.

Sumar y Restar Períodos Relativos

Podemos sumar o restar períodos relativos a una fecha:

from dateutil.relativedelta import relativedelta

# Sumar un mes
nueva_fecha = fecha + relativedelta(months=1)
print(nueva_fecha)  # Salida: 2024-08-28

# Restar un año
nueva_fecha = fecha - relativedelta(years=1)
print(nueva_fecha)  # Salida: 2023-07-28

Análisis de Cadenas de Fecha

La función parser.parse permite convertir una cadena de texto a una fecha automáticamente:

from dateutil import parser

fecha_cadena = "28th of July, 2024, 2:30 PM"
fecha_convertida = parser.parse(fecha_cadena)
print(fecha_convertida)  # Salida: 2024-07-28 14:30:00

Conclusión

Trabajar con fechas en Python es una habilidad esencial para cualquier desarrollador. Con las bibliotecas datetime, time, calendar, pytz y dateutil, podemos manejar fechas y horas de manera eficiente y efectiva. Desde la creación y manipulación de objetos de fecha y hora, hasta la conversión entre diferentes zonas horarias y el trabajo con fechas relativas, Python ofrece herramientas poderosas para todas estas tareas.

Etiquetas:
python
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer