Dominar strptime() en Python: Parsing Preciso de Fechas desde Cadenas
Python strptime(): Convertir Cadenas a Objetos Datetime
Esta guía muestra cómo crear objetos datetime a partir de cadenas usando el método datetime.strptime() de Python, con ejemplos prácticos y una referencia completa de códigos de formato.
Video: Fechas y Horas en Python
Mira el tutorial oficial de Python para profundizar en el manejo de fechas y horas.
El método strptime() crea un objeto datetime a partir de una cadena que sigue un formato especificado.
Nota: No toda cadena puede analizarse; la entrada debe coincidir exactamente con el código de formato.
Ejemplo 1: Convertir una Cadena de Fecha Simple
from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
print("tipo de date_string =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("tipo de date_object =", type(date_object))
Al ejecutar el programa, la salida será:
date_string = 21 June, 2018 tipo de date_string = <class 'str'> date_object = 2018-06-21 00:00:00 tipo de date_object = <class 'datetime.datetime'>
¿Cómo funciona strptime()?
El método de clase strptime() acepta dos argumentos:
- La cadena que se va a analizar.
- El código de formato que describe la estructura de la cadena.
Basándose en estas entradas, el método devuelve un objeto datetime que representa el mismo momento en el tiempo.
En el ejemplo anterior, el código de formato %d %B, %Y significa:
%d– día del mes con ceros a la izquierda (01‑31).%B– nombre completo del mes (Enero‑Diciembre).%Y– año de cuatro dígitos.
Ejemplo 2: Analizar Fechas Ambiguas
from datetime import datetime
dt_string = "12/11/2018 09:15:32"
# Suponiendo formato día/mes/año
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)
# Suponiendo formato mes/día/año
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)
El programa produce:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Lista Completa de Códigos de Formato
La tabla siguiente resume todas las directivas que puedes usar con strptime(). Para la documentación completa, consulta la guía oficial del módulo datetime de Python.
| Directiva | Significado | Ejemplo |
|---|---|---|
%a | Nombre abreviado del día de la semana. | Dom, Lun, ... |
%A | Nombre completo del día de la semana. | Domingo, Lunes, ... |
%w | Día de la semana como número decimal. | 0, 1, ..., 6 |
%d | Día del mes (con ceros a la izquierda). | 01, 02, ..., 31 |
%-d | Día del mes (sin relleno). | 1, 2, ..., 30 |
%b | Nombre abreviado del mes. | Ene, Feb, ..., Dic |
%B | Nombre completo del mes. | Enero, Febrero, ... |
%m | Número de mes (con ceros a la izquierda). | 01, 02, ..., 12 |
%-m | Número de mes (sin relleno). | 1, 2, ..., 12 |
%y | Año sin siglo (con ceros a la izquierda). | 00, 01, ..., 99 |
%-y | Año sin siglo (sin relleno). | 0, 1, ..., 99 |
%Y | Año con siglo. | 2013, 2019, ... |
%H | Hora (reloj de 24h, con ceros a la izquierda). | 00, 01, ..., 23 |
%-H | Hora (reloj de 24h, sin relleno). | 0, 1, ..., 23 |
%I | Hora (reloj de 12h, con ceros a la izquierda). | 01, 02, ..., 12 |
%-I | Hora (reloj de 12h, sin relleno). | 1, 2, ..., 12 |
%p | AM o PM según la configuración regional. | AM, PM |
%M | Minutos (con ceros a la izquierda). | 00, 01, ..., 59 |
%-M | Minutos (sin relleno). | 0, 1, ..., 59 |
%S | Segundos (con ceros a la izquierda). | 00, 01, ..., 59 |
%-S | Segundos (sin relleno). | 0, 1, ..., 59 |
%f | Microsegundos (con ceros a la izquierda). | 000000 – 999999 |
%z | Desplazamiento UTC (+HHMM o –HHMM). | |
%Z | Nombre de la zona horaria. | |
%j | Día del año (con ceros a la izquierda). | 001, 002, ..., 366 |
%-j | Día del año (sin relleno). | 1, 2, ..., 366 |
%U | Número de semana (domingo primero). | 00, 01, ..., 53 |
%W | Número de semana (lunes primero). | 00, 01, ..., 53 |
%c | Fecha y hora según la configuración regional. | Lun Sep 30 07:06:05 2013 |
%x | Fecha según la configuración regional. | 09/30/13 |
%X | Hora según la configuración regional. | 07:06:05 |
%% | Signo de porcentaje literal. | % |
Error Común: ValueError
Si la cadena y el código de formato no coinciden, strptime() lanza un ValueError. Por ejemplo:
from datetime import datetime
date_string = "12/11/2018" # Formato incorrecto – espera día mes año
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object =", date_object)
Ejecutar este código produce:
ValueError: time data '12/11/2018' does not match format '%d %m %Y'
Lectura Recomendada: Python strftime()
python
- Palabras clave e identificadores en Python: Dominando palabras reservadas y convenciones de nomenclatura
- Dominando tipos de datos en Python: Guía práctica
- Dominando operadores en Python: Guía completa
- Dominando la sentencia pass en Python: Guía práctica
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
- Dominando Iteradores en Python: Cómo Funcionan y Cómo Crear los Tuyos
- Explicación de Closures en Python: Cómo las Funciones Anidadas Capturan Variables
- Expresiones Regulares en Python (Módulo re) – Guía Práctica
- Dominando datetime en Python: Guía Práctica de Fechas, Horas y Zonas Horarias
- Dominar el Módulo time de Python: Funciones, Structs y Ejemplos Prácticos