Crear fecha y hora de Python a partir de una string

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *