Librería datetime en python

05/01/2013

La librería datetime en Python es una herramienta fundamental para trabajar con fechas y horas. Su flexibilidad y potencia la convierten en una opción indispensable para una amplia gama de aplicaciones, desde la simple impresión de la fecha actual hasta el manejo de eventos programados y la gestión de registros de tiempo.

Temario

Importando la Librería

Antes de empezar a usar datetime, debemos importarla:

from datetime import datetime

Obtener la Fecha y Hora Actuales

La función datetime.now() devuelve un objeto datetime que contiene la fecha y hora actuales:

from datetime import datetimeahora = datetime.now()print(ahora)

Conversión de Cadenas a Objetos datetime

La función strptime() permite convertir cadenas de texto que representan fechas y horas en objetos datetime. Es crucial especificar el formato de la cadena usando códigos de formato:

from datetime import datetimecadena_fecha = "2024-10-26 10:30:00"objeto_fecha = datetime.strptime(cadena_fecha, "%Y-%m-%d %H:%M:%S")print(objeto_fecha)

Algunos códigos de formato comunes:

  • %Y : Año con siglo (ej: 2024)
  • %m : Mes como número (01-12)
  • %d : Día del mes (01-31)
  • %H : Hora (24 horas, 00-23)
  • %M : Minuto (00-59)
  • %S : Segundo (00-59)

Conversión de Objetos datetime a Cadenas

La función strftime() realiza la operación inversa, convirtiendo un objeto datetime en una cadena con un formato específico:

from datetime import datetimeahora = datetime.now()fecha_formateada = ahora.strftime("%A, %d de %B de %Y")print(fecha_formateada)

Comparación de Objetos datetime

Los objetos datetime se pueden comparar usando los operadores de comparación estándar (>, <, >=, <=, ==, !=):

from datetime import datetimefecha1 = datetime(2024, 10, 27)fecha2 = datetime(2024, 10, 28)if fecha1 < fecha2: print("fecha1 es anterior a fecha2")

Aritmética con datetime: timedelta

La clase timedelta representa una duración. Se utiliza para sumar o restar periodos de tiempo a objetos datetime :

libreria datetime python - What is the UTC format for datetime

from datetime import datetime, timedeltaahora = datetime.now()dos_dias_despues = ahora + timedelta(days=2)print(dos_dias_despues)

timedelta acepta argumentos como days, seconds, microseconds, milliseconds, minutes, hours, weeks.

Clases Relacionadas: date y time

Además de datetime, la librería incluye:

  • date : Representa una fecha (año, mes, día) sin hora.
  • time : Representa una hora (hora, minuto, segundo, microsegundo) sin fecha.
from datetime import date, timefecha_hoy = date.today()hora_reunion = time(14, 30)print(fecha_hoy)print(hora_reunion)

Formatos de Fecha y Hora: Una Tabla Comparativa

Código Descripción Ejemplo
%Y Año con siglo 2024
%y Año sin siglo 24
%m Mes (01-12) 10
%B Nombre del mes Octubre
%d Día del mes (01-31) 26
%A Nombre del día de la semana Viernes
%H Hora (24h, 00-23) 14
%I Hora (12h, 01-12) 02
%M Minuto (00-59) 30
%S Segundo (00-59) 45
%p AM/PM PM

Consultas Habituales y Solución de Problemas

¿Cómo obtener solo la fecha de un objeto datetime?

Se accede al atributo datedel objeto datetime :

from datetime import datetimeahora = datetime.now()fecha_solo = ahora.date()print(fecha_solo)

¿Cómo obtener solo la hora de un objeto datetime?

Se accede al atributo timedel objeto datetime :

from datetime import datetimeahora = datetime.now()hora_solo = ahora.time()print(hora_solo)

¿Cómo restar dos fechas y obtener la diferencia en días?

Se resta un objeto datetime de otro. El resultado es un timedelta. Se accede al atributo days:

libreria datetime python - How to format datetime date in Python

from datetime import datetimefecha1 = datetime(2024, 10, 26)fecha2 = datetime(2024, 10, 28)diferencia = fecha2 - fecha1dias = diferencia.daysprint(dias)

¿Cómo manejar zonas horarias?

Para manejar zonas horarias, se necesita la librería pytz. Esta librería no está incluida en la distribución estándar de Python, por lo que debe instalarse por separado usando pip install pytz.

from datetime import datetimeimport pytzutc = pytz.utczona_horaria_local = pytz.timezone('America/Argentina/Buenos_Aires') # Reemplazar con tu zona horariaahora_utc = datetime.now(utc)ahora_local = ahora_utc.astimezone(zona_horaria_local)print(ahora_utc)print(ahora_local)

Ejemplos Prácticos

Registro de eventos en una aplicación web

Registrar la fecha y hora de cada acción del usuario:

from datetime import datetimeevento = "inicio de sesión"fecha_evento = datetime.now()print(f"Evento: {evento}, Fecha: {fecha_evento}")

Planificación de tareas

Programar una tarea para una fecha y hora específica:

from datetime import datetime, timedeltafecha_tarea = datetime(2024, 11, 1, 10, 0, 0)ahora = datetime.now()if ahora < fecha_tarea: tiempo_restante = fecha_tarea - ahora print(f"Tiempo restante para la tarea: {tiempo_restante}")else: print("La tarea ya debió ejecutarse")

Control de vencimiento

Verificar si una fecha de vencimiento ha pasado:

from datetime import datetimefecha_vencimiento = datetime(2024, 10, 31)hoy = datetime.now()if hoy > fecha_vencimiento: print("La fecha de vencimiento ha pasado")

Conclusión

La librería datetime de Python es una herramienta versátil y esencial para cualquier desarrollador que trabaje con fechas y horas. Su capacidad para manejar diferentes formatos, realizar operaciones aritméticas y trabajar con zonas horarias la convierte en una herramienta invaluable en una gran variedad de proyectos.

Si quieres conocer otros artículos parecidos a Librería datetime en python puedes visitar la categoría Libros y Librerías.

Subir