Cómo analizar una cadena en una fecha y hora en Python (strptime)

Aprenda cómo convertir cadenas en objetos de fecha y hora en Python. Domine el método strptime, analice cadenas de fechas, maneje zonas horarias y evite errores de formato.

Pruebe esta solución en el Editor

Descripción general

Al crear aplicaciones que procesan envíos de formularios de usuario, extraen bases de datos web, analizan registros del servidor o importan hojas CSV, con frecuencia recibirá información de fecha y hora como cadenas de texto sin formato (por ejemplo, `"2026-05-25 15:45"`). Dado que no puede realizar cálculos, aritmética de fechas ni ordenar cadenas, debe analizarlas en objetos de fecha y hora de Python.

El método principal para esta conversión es `datetime.strptime(date_string, format_string)`. El nombre significa "tiempo de análisis de cadenas". La función toma la cadena de fecha sin formato y una plantilla de formato que contiene directivas (como `%Y` para el año, `%m` para el mes y `%d` para el día) y devuelve el objeto de fecha y hora correspondiente.

Si la cadena de entrada no coincide exactamente con la plantilla de formato proporcionada, Python genera un "ValueError". Para evitar fallas, siempre incluya las operaciones `strptime()` en un bloque `try-except`. Para aplicaciones que analizan entradas de fechas diversas y no estructuradas, las bibliotecas externas como `python-dateutil` pueden ayudar a automatizar la detección del analizador.

Código y salida de ejecución

Este script demuestra el análisis de cadenas de fechas usando datetime.strptime, el manejo de entradas no válidas y el cálculo de diferencias de fechas.

parse_datetime.py
Pruébelo en el editor
from datetime import datetime

# 1. Basic parsing using strptime
date_str = "2026-05-25 18:30:00"
format_template = "%Y-%m-%d %H:%M:%S"

parsed_date = datetime.strptime(date_str, format_template)
print("Parsed DateTime:", parsed_date)
print("Month parsed:", parsed_date.month)
print("Hour parsed:", parsed_date.hour)

# 2. Handling parse errors safely
bad_date_str = "25/05/2026"
try:
    datetime.strptime(bad_date_str, "%Y-%m-%d")
except ValueError as e:
    print(f"\nParse Error: {e}")

# Correcting the format
corrected_date = datetime.strptime(bad_date_str, "%d/%m/%Y")
print("Corrected Parse:", corrected_date.date())
Salida terminal
Parsed DateTime: 2026-05-25 18:30:00
Month parsed: 5
Hour parsed: 18

Parse Error: time data '25/05/2026' does not match format '%Y-%m-%d'
Corrected Parse: 2026-05-25

Implementación paso a paso

  • Importe la clase de fecha y hora del módulo de fecha y hora.
  • Identifique la estructura exacta de su cadena de fechas (por ejemplo, día, mes, separadores).
  • Llame a datetime.strptime(date_string, format_pattern) con las directivas apropiadas (como %Y, %m, %d).
  • Envuelva la declaración de análisis en un bloque ValueError try-except para manejar cadenas con formato incorrecto con elegancia.

Preguntas frecuentes

¿Cuál es la diferencia entre strftime y strptime?

strptime (tiempo de análisis de cadenas) analiza una cadena para crear un objeto de fecha y hora. strftime (hora en formato de cadena) formatea un objeto de fecha y hora en una representación de cadena legible.

¿Cómo analizo cadenas de fecha ISO 8601 (por ejemplo, "2026-05-25T18:30:00Z")?

EnPython 3.7+, puede utilizar la función incorporada datetime.fromisoformat(string), que maneja cadenas ISO de manera eficiente sin requerir una plantilla de formato manual.

Temas relacionados

Recursos recomendados de Python

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