Introducción
Los módulos datetime
y time
de Python incluyen ambos un método de clase strptime()
para convertir cadenas en objetos.
En este artículo, utilizarás strptime()
para convertir cadenas en objetos datetime
y struct_time()
.
Implementa tus aplicaciones de Python desde GitHub utilizando la Plataforma de Aplicaciones de DigitalOcean. Permite que DigitalOcean se encargue de escalar tu aplicación.
Conversión de una cadena a un objeto datetime
utilizando datetime.strptime()
La sintaxis para el método datetime.strptime()
es:
datetime.strptime(date_string, format)
El método datetime.strptime()
devuelve un objeto datetime
que coincide con la cadena_de_fecha analizada por el formato. Ambos argumentos son obligatorios y deben ser cadenas.
Para obtener detalles sobre las directivas de formato utilizadas en datetime.strptime()
, consulta los Códigos de formato de strftime()
y strptime()
en la documentación de Python.
Convertir cadena a objeto datetime.datetime()
Ejemplo
El siguiente ejemplo convierte una cadena de fecha y hora en un objeto datetime.datetime()
, e imprime el nombre de la clase y el valor del objeto resultante:
from datetime import datetime
datetime_str = '09/19/22 13:55:26'
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S')
print(type(datetime_object))
print(datetime_object) # impreso en formato predeterminado
La salida es:
<class 'datetime.datetime'>
2022-09-19 13:55:26
Convertir cadena a objeto datetime.date()
Ejemplo
El siguiente ejemplo convierte una cadena de fecha en un objeto datetime.date()
, e imprime el tipo de clase y el valor del objeto resultante:
from datetime import datetime
date_str = '09-19-2022'
date_object = datetime.strptime(date_str, '%m-%d-%Y').date()
print(type(date_object))
print(date_object) # impreso en formato predeterminado
La salida es:
<class 'datetime.date'>
2022-09-19
Convertir cadena a objeto datetime.time()
Ejemplo
El siguiente ejemplo convierte una cadena de tiempo en un objeto datetime.time()
y muestra el tipo de clase y el valor del objeto resultante:
from datetime import datetime
time_str = '13::55::26'
time_object = datetime.strptime(time_str, '%H::%M::%S').time()
print(type(time_object))
print(time_object)
La salida es:
<class 'datetime.time'>
13:55:26
Convertir Cadena a Objeto datetime.datetime()
con Ejemplo de Configuración Regional
El siguiente ejemplo convierte una cadena de fecha con configuración regional alemana en un objeto datetime.datetime()
y muestra el tipo de clase y el valor del objeto resultante:
from datetime import datetime
import locale
locale.setlocale(locale.LC_ALL, 'de_DE')
date_str_de_DE = '16-Dezember-2022 Freitag' # Configuración regional de Alemania (de_DE)
datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')
print(type(datetime_object))
print(datetime_object)
La salida es:
<class 'datetime.datetime'>
2022-12-16 00:00:00
Tenga en cuenta que el objeto resultante no incluye el nombre del día de la semana de la cadena de entrada, ya que un objeto datetime.datetime()
solo incluye el día de la semana como un número decimal.
Convertir una Cadena a un Objeto struct_time()
Usando time.strptime()
La sintaxis para el método time.strptime()
es:
time.strptime(time_string[, format])
El método time.strptime()
devuelve un objeto time.struct_time()
que coincide con la cadena de tiempo time_string analizada por el formato. La cadena de tiempo es requerida y ambos argumentos deben ser cadenas. Si no se proporciona formato, el predeterminado es:
'%a %b %d %H:%M:%S %Y'
Esto corresponde al formato devuelto por la función ctime()
.
Las directivas de formato son las mismas para time.strptime()
y time.strftime()
. Obtenga más información sobre las directivas de formato para el módulo time
en la documentación de Python.
Convertir Cadena a Objeto struct_time()
Con Ejemplo de Formato Proporcionado
El siguiente ejemplo convierte una cadena de tiempo en un objeto time.struct_time()
proporcionando el argumento formato, e imprime el valor del objeto resultante:
import time
time_str = '11::33::54'
time_obj = time.strptime(time_str, '%H::%M::%S')
print("A time.struct_time object that uses the format provided:")
print(time_obj)
La salida es:
A time.struct_time object that uses the format provided:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1,
tm_hour=11, tm_min=33, tm_sec=54, tm_wday=0, tm_yday=1,
tm_isdst=-1)
Como se muestra en la salida, cuando conviertes una cadena en un objeto time.struct_time()
, el método strptime()
utiliza valores de marcador de posición para cualquier directiva de formato que no esté definida en el argumento formato.
Convertir Cadena a Objeto struct_time()
Usando el Formato Predeterminado Ejemplo
Si no proporcionas un argumento formato al convertir una cadena de tiempo en un objeto time.struct_time()
, entonces se utiliza el formato predeterminado y se produce un error si la cadena de entrada no coincide exactamente con el formato predeterminado de:
'%a %b %d %H:%M:%S %Y'
El siguiente ejemplo convierte una cadena de tiempo en un objeto time.struct_time()
sin proporcionar ningún argumento de formato, e imprime el valor del objeto resultante:
import time
# formato predeterminado - "%a %b %d %H:%M:%S %Y"
time_str_default = 'Mon Dec 12 14:55:02 2022'
time_obj_default = time.strptime(time_str_default)
print("A time.struct_time object that uses the default format:")
print(time_obj_default)
El resultado es:
A time.struct_time object that uses the default format:
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=12,
tm_hour=14, tm_min=55, tm_sec=2, tm_wday=0, tm_yday=346,
tm_isdst=-1)
Como se muestra en la salida, cuando conviertes una cadena en un objeto time.struct_time()
, el método strptime()
usa valores de marcador de posición para cualquier directiva de formato que no esté definida en el argumento de formato o por el formato predeterminado si no se proporciona ningún formato.
Resolución de Errores de strptime()
Si la cadena de entrada no puede ser analizada por strptime()
utilizando el formato proporcionado, se genera un ValueError
. Puedes utilizar el bloque try
para probar errores de análisis, junto con el bloque except
para imprimir los resultados. Los mensajes de ValueError
que obtienes cuando usas el método strptime()
explican claramente las causas raíz de los errores de análisis. El siguiente ejemplo demuestra algunos errores comunes, como datos adicionales y una falta de coincidencia de formato.
from datetime import datetime
import time
datetime_str = '09/19/18 13:55:26'
try:
datetime_object = datetime.strptime(datetime_str, '%m/%d/%y')
except ValueError as ve1:
print('ValueError 1:', ve1)
time_str = '99::55::26'
try:
time_object = time.strptime(time_str, '%H::%M::%S')
except ValueError as ve2:
print('ValueError 2:', ve2)
La salida es:
ValueError 1: unconverted data remains: 13:55:26
ValueError 2: time data '99::55::26' does not match format '%H::%M::%S'
Conclusión
En este tutorial, convertiste cadenas de fecha y hora en objetos datetime
y time
utilizando Python. Continúa tu aprendizaje con más tutoriales de Python.
Source:
https://www.digitalocean.com/community/tutorials/python-string-to-datetime-strptime