Python strptime()
los strptime()
El método crea un objeto de fecha y hora a partir de la cadena dada.
Nota: no puedes crear datetime
objeto de cada cadena. La cadena debe estar en un formato determinado.
Ejemplo 1: cadena a objeto de fecha y hora
from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
print("type of date_string =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("type of date_object =", type(date_object))
Cuando ejecute el programa, la salida será:
date_string = 21 June, 2018 type of date_string = <class 'str'> date_object = 2018-06-21 00:00:00 type of date_object = <class 'datetime.datetime'>
¿Cómo funciona strptime()?
los strptime()
El método de clase toma dos argumentos:
- cadena (que se convierte a fecha y hora)
- código de formato
Según la cadena y el código de formato utilizado, el método devuelve su equivalente datetime
objeto.
En el ejemplo anterior:
Aquí,
%d
– Representa el día del mes. Ejemplo: 01, 02, …, 31%B
– Nombre del mes completo. Ejemplo: enero, febrero, etc.%Y
– Año en cuatro dígitos. Ejemplo: 2018, 2019, etc
Ejemplo 2: cadena a objeto de fecha y hora
from datetime import datetime
dt_string = "12/11/2018 09:15:32"
# Considering date is in dd/mm/yyyy format
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)
# Considering date is in mm/dd/yyyy format
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)
Cuando ejecute el programa, la salida será:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Lista de códigos de formato
La siguiente tabla muestra todos los códigos de formato que puede utilizar.
Directiva | Sentido | 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 un número decimal. | 0, 1, …, 6 |
%d | Día del mes como decimal con ceros. | 01, 02, …, 31 |
%-d | Día del mes como número decimal. | 1, 2, …, 30 |
%b | Nombre del mes abreviado. | ene, feb, …, dic |
%B | Nombre del mes completo. | Enero febrero, … |
%m | Mes como un número decimal con ceros. | 01, 02, …, 12 |
%-m | Mes como un número decimal. | 1, 2, …, 12 |
%y | Año sin siglo como un número decimal con ceros. | 00, 01, …, 99 |
%-y | Año sin siglo como número decimal. | 0, 1, …, 99 |
%Y | Año con siglo como número decimal. | 2013, 2019, etc |
%H | Hora (reloj de 24 horas) como un número decimal con ceros. | 00, 01, …, 23 |
%-H | Hora (reloj de 24 horas) como un número decimal. | 0, 1, …, 23 |
%I | Hora (reloj de 12 horas) como un número decimal con ceros. | 01, 02, …, 12 |
%-I | Hora (reloj de 12 horas) como un número decimal. | 1, 2, … 12 |
%p | AM o PM de la localidad. | AM PM |
%M | Minuto como un número decimal con ceros. | 00, 01, …, 59 |
%-M | Minuto como un número decimal. | 0, 1, …, 59 |
%S | Segundo como un número decimal con ceros. | 00, 01, …, 59 |
%-S | Segundo como un número decimal. | 0, 1, …, 59 |
%f | Microsegundo como número decimal, con ceros a la izquierda. | 000000 – 999999 |
%z | Desplazamiento UTC en la forma +HHMM o -HHMM. | |
%Z | Nombre de la zona horaria. | |
%j | Día del año como un número decimal con ceros. | 001, 002, …, 366 |
%-j | Día del año como número decimal. | 1, 2, …, 366 |
%U | Número de semana del año (domingo como primer día de la semana). Todos los días de un nuevo año que preceden al primer domingo se consideran en la semana 0. | 00, 01, …, 53 |
%W | Número de semana del año (lunes como primer día de la semana). Todos los días de un nuevo año que preceden al primer lunes se consideran en la semana 0. | 00, 01, …, 53 |
%c | Representación de fecha y hora adecuada de la configuración regional. | lun 30 sep 07:06:05 2013 |
%x | Representación de fecha adecuada de la configuración regional. | 30/09/13 |
%X | Representación de tiempo adecuada de la configuración regional. | 07:06:05 |
%% | Un carácter ‘%’ literal. | % |
ValueError en strptime()
Si la cadena (primer argumento) y el código de formato (segundo argumento) se pasan al strptime()
no coincide, obtendrá ValueError
. Por ejemplo:
from datetime import datetime
date_string = "12/11/2018"
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object =", date_object)
Si ejecuta este programa, obtendrá un error.
ValueError: time data '12/11/2018' does not match format '%d %m %Y'
Lecturas recomendadas: Python strftime()