En este artículo, veremos cómo crear un objeto DateTime de python a partir de una string dada.
Para ello, utilizaremos el método datetime.strptime() . El método strptime() devuelve un objeto DateTime correspondiente a date_string, analizado según la string de formato dada por el usuario.
Sintaxis : datetime.strptime(fecha_string, formato)
Convertir string a DateTime usando strptime()
Aquí vamos a convertir una string simple en un objeto de fecha y hora, para esto pasaremos la string a strptime() y objetivaremos el objeto de fecha y hora a través de esto.
Python3
from datetime import datetime input_str = '21/01/24 11:04:19' dt_object = datetime.strptime( input_str, '%d/%m/%y %H:%M:%S') print("The type of the input date string now is: ", type(dt_object)) print("The date is", dt_object)
Producción:
El tipo de la string de fecha de entrada ahora es: <class ‘datetime.datetime’>
La fecha es 2024-01-21 11:04:19
Conversión de strings que contienen palabras a fecha y hora usando strptime()
El método strptime() le permite convertir marcas de tiempo en «palabras» en objetos de fecha y hora también. El siguiente fragmento muestra que se puede hacer:
Python3
from datetime import datetime time_str = 'May 17 2019 11:33PM' dt_object = datetime.strptime( time_str, '%b %d %Y %I:%M%p') print(dt_object)
Producción:
2019-05-17 23:33:00
Python strptime() ValueError
Se debe conocer el formato de fecha y hora para la string dada, ya que si no lo hace puede causar problemas y errores innecesarios. el siguiente fragmento muestra los problemas que se pueden causar:
Python3
from datetime import datetime time_str = '201123101455' dt_obj = datetime.strptime(time_str, '%y%m%d%H%M%S') dt_obj2 = datetime.strptime(time_str, '%d%m%y%H%S%M') print ("1st interpretation of date from string is: ",dt_obj) print ("2nd interpretation of date from same string is", dt_obj2)
Producción :
La primera interpretación de la fecha de la string es: 2020-11-23 10:14:55
La segunda interpretación de la fecha de la misma string es 2023-11-20 10:55:14
El método strptime() no funcionará si el argumento de string no es coherente con el parámetro de formato. Los siguientes fragmentos muestran un error debido a una discrepancia en el especificador de formato.
Python3
from datetime import datetime time_str = '220917 114519' dt_obj = datetime.strptime(time_str, '%d/%m/%y %H:%M:%S') print ("The type is", type(dt_obj)) print ("The date is", date_time_obj)
Producción:
ValueError(“los datos de tiempo %r no coinciden con el formato %r” %(data_string, format))
Lista de códigos de formato
Los especificadores de formato son en su mayoría los mismos que para el método strftime(). Estos especificadores son:
Directivas | 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, … |
%metro | Mes como un número decimal con ceros. | 01, 02, …, 12 |
%-metro | 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 |
%YO | Hora (reloj de 12 horas) como un número decimal con ceros. | 01, 02, …, 12 |
%-YO | Hora (reloj de 12 horas) como un número decimal. | 1, 2, … 12 |
%pags | AM o PM de la localidad. | AM PM |
%METRO | Minuto como un número decimal con ceros. | 00, 01, …, 59 |
%-METRO | 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 |
%% | Un carácter ‘%’ literal. | % |
Publicación traducida automáticamente
Artículo escrito por fallenvalkyrie y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA