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.
Para comenzar a trabajar con fechas y horas en Python, primero debemos importar la biblioteca datetime
:
import datetime
Podemos crear un objeto de fecha utilizando la clase date
:
fecha = datetime.date(2024, 7, 28)
print(fecha) # Salida: 2024-07-28
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
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
La biblioteca datetime
permite realizar operaciones aritméticas con fechas y horas.
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
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
Para convertir objetos de fecha y hora a cadenas de texto, y viceversa, utilizamos los métodos strftime
y strptime
.
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
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
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.
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)
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!")
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)
calendar
La biblioteca calendar
permite trabajar con calendarios, generando listas y matrices de fechas.
Podemos imprimir un calendario para un mes específico utilizando calendar.month
:
import calendar
calendario_julio = calendar.month(2024, 7)
print(calendario_julio)
La función isleap
nos dice si un año es bisiesto:
es_bisiesto = calendar.isleap(2024)
print(es_bisiesto) # Salida: True
pytz
Para trabajar con zonas horarias, la biblioteca pytz
es una herramienta muy útil.
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)
Para listar todas las zonas horarias disponibles en pytz
:
zonas_horarias = pytz.all_timezones
print(zonas_horarias)
dateutil
La biblioteca dateutil
facilita el manejo de fechas relativas.
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
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
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.
Jorge García
Fullstack developer