Python Datetime: trabajar con fechas y horas

Aprenda a manejar fechas, horas, zonas horarias y cálculos en Python. Domine el formato, el análisis y la aritmética utilizando datetime y timedelta.

Pruébelo en el editor

Descripción general

Manejar fechas y horas es un desafío notorio en el desarrollo de software, debido a los años bisiestos, los ajustes del horario de verano y los diferentes formatos de zona horaria. Python resuelve estos desafíos con su módulo incorporado `datetime`. Este módulo proporciona un conjunto sólido de clases de objetos, como "fecha", "hora", "fecha y hora" y "zona horaria", que representan y manipulan datos temporales de forma limpia, lo que simplifica los cálculos de fechas.

Una de las tareas más comunes es convertir fechas en cadenas (formato) y cadenas en fechas (análisis). Python usa dos métodos principales para esto: `.strftime()` (formato de cadena de tiempo) convierte un objeto de fecha y hora en una cadena legible usando códigos de formato (como `%Y` para año, `%m` para mes y `%d` para día). Por el contrario, `datetime.strptime()` (tiempo de análisis de cadenas) analiza una entrada de cadena sin formato en un objeto de fecha y hora basándose en una plantilla de formato coincidente, lo cual es vital al leer registros o entradas de API.

La realización de cálculos de fechas también es totalmente compatible con el objeto `timedelta`. Un "timedelta" representa una duración de tiempo (por ejemplo, 7 días, 4 horas). Puede sumar o restar un `timedelta` de un `datetime` para calcular fechas pasadas o futuras (como determinar una fecha de vencimiento). Cuando se trabaja con varias zonas horarias, el uso de objetos que reconozcan la zona horaria (como `zoneinfo` o `timezone.utc`) es fundamental para garantizar que las comparaciones de fechas sigan siendo precisas en diferentes ubicaciones de servidores.

Código y salida de ejecución

Analizar cadenas en objetos de fecha y hora y calcular fechas límite futuras utilizando timedelta.

datetime_demo.py
Pruébelo en el editor
from datetime import datetime, timedelta

# Define a specific fixed base date and time (for deterministic runs)
base_date = datetime(2026, 5, 25, 23, 45, 50)
print(f"Base Date/Time: {base_date}")

# Format datetime as string
formatted = base_date.strftime("%Y-%m-%d %H:%M:%S")
print(f"Formatted String: {formatted}")

# Parse string to datetime
date_str = "2026-12-25"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d")
print(f"Parsed Date: {parsed_date}")

# Date arithmetic with timedelta
ten_days_later = base_date + timedelta(days=10)
print(f"Date 10 days later: {ten_days_later.strftime('%Y-%m-%d')}")
Salida terminal
Base Date/Time: 2026-05-25 23:45:50
Formatted String: 2026-05-25 23:45:50
Parsed Date: 2026-12-25 00:00:00
Date 10 days later: 2026-06-04

Implementación paso a paso

  • Calcular el vencimiento de la prueba y las fechas de facturación
  • Análisis de cadenas de marca de tiempo dentro de los registros de acceso al servidor
  • Programar trabajos cron automatizados o informes recurrentes

Preguntas frecuentes

¿Qué es un objeto de fecha y hora ingenuo o consciente?

Un objeto de fecha y hora ingenuo no contiene información de zona horaria, mientras que un objeto de fecha y hora consciente incluye desplazamientos de zona horaria, lo que lo hace seguro para los cálculos de hora internacional.

¿Cómo calculo la diferencia entre dos fechas?

Restar un objeto de fecha y hora de otro devuelve un objeto delta de tiempo que representa la duración exacta entre ellos.

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.