Cómo convertir cadenas a fecha y hora en Python

Publicado: 2022-12-20

La conversión de un tipo de datos a otro tipo de datos es crucial en cualquier lenguaje de programación. Casi todos los lenguajes de programación admiten conversiones de tipo para tipos de datos integrados.

Los tipos de datos personalizados, como la fecha y la hora, necesitan módulos adicionales para las conversiones. Necesitamos módulos, especialmente para conversiones de datetime y hora, ya que trabajar con ellos nunca fue fácil para los programadores. Afortunadamente, Python tiene módulos incorporados para trabajar con fecha y hora.

Aprenderemos cómo convertir una datetime de fecha y hora en un objeto de datetime y hora en Python usando diferentes módulos. Antes de saltar a eso, veamos por qué necesitamos convertirlo en primer lugar.

¿Por qué necesitamos convertir una cadena de fecha y hora en un objeto de fecha y hora?

Cuando tenemos que trabajar con fechas, no es fácil hacerlo si están en formato de cadena. Convertirlos al formato de fecha y hora hace que trabajar con ellos sea muy fácil. Las fechas en cadenas son como cadenas normales. No tendrá ningún método especial para trabajar con fechas. Tendrá métodos de cadena generales, que no necesitaremos mientras trabajamos con fechas.

Digamos que tenemos que comparar dos fechas. Si están en formato de cadena, podemos compararlos correctamente. Si están en formato de datetime y hora, podemos usar los operadores de comparación como números.

Este es solo un escenario en el que la conversión al formato de datetime y hora facilita las cosas. Hay muchos escenarios como agregar fechas, restar, manejar zonas horarias, etc., donde convertir datetime cadena de datetime y hora en un objeto de fecha y hora nos hace la vida más fácil que nunca.

Dicho esto, veamos diferentes formas de convertir una datetime de fecha y hora en un objeto de datetime y hora. dateutil módulos de datetime y hora incorporados y de terceros para convertir la datetime de datetime y hora en un objeto de fecha y hora. Comencemos con el módulo de fecha y hora.

Usando fecha y hora

El datetime es un módulo integrado de Python que se utiliza para trabajar con fechas y horas. Hay muchas clases en este módulo que nos ayudan a trabajar con fechas y horas. Usaremos la clase datetime.datetime para la conversión.

El datetime.datetime tiene muchos métodos. Estamos interesados ​​en el método strptime que nos ayudará en la conversión. Vamos a comprobarlo.

fechahora.strptime

El método datetime.strptime se utiliza para convertir una cadena de datetime y hora en un objeto de fecha y datetime . Toma dos cadenas, una es una cadena de datetime y hora y la otra es el formato de esa cadena de datetime y hora. Y devuelve el objeto de datetime y hora.

Veamos un ejemplo

 from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))

Si ejecuta el código anterior, verá el siguiente resultado.

 2022-12-19 21:37:56

Tomamos una cadena de fecha y hora y la convertimos en un objeto de datetime y datetime.strptime datetime Asegúrese de que el formato que está proporcionando al método coincida exactamente con la cadena de datetime y hora. Si no coinciden, es posible que obtenga un error o una salida incorrecta.

Hemos utilizado algunos códigos de formato para el formato de datetime y hora. Puede consultar todos los códigos de formato en los documentos.

El método datetime.strptime devuelve datetime completo. Si desea obtener la fecha y la hora por separado, podemos usar los métodos de datetime time objeto de fecha y hora. Veamos el código.

 from datetime import datetime string = "19-12-2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" ## getting date separately print("Date:", datetime.strptime(string, formatting).date()) ## getting time separately print("Time:", datetime.strptime(string, formatting).time())

Ejecute el código anterior y verá el siguiente resultado.

 Date: 2022-12-19 Time: 21:37:56

Los métodos date y time devolverán sus objetos respectivamente. Volverán a tener sus respectivos métodos para fechas y horas.

Hemos proporcionado las cadenas y los formatos correctos para el método datetime.strptime que hemos visto anteriormente. Si no los proporcionamos correctamente, obtendremos errores. Veamos cómo manejar esos errores. Ejecute el siguiente código.

 from datetime import datetime string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting))

El código anterior generará un error porque el formato no coincide con la cadena de datetime y hora. Para manejar este tipo de errores, podemos usar el método try-except de Python. Vamos a agregarlo.

 from datetime import datetime try: string = "19:12:2022 09:37:56 PM" formatting = "%d-%m-%Y %I:%M:%S %p" print(datetime.strptime(string, formatting)) except ValueError as error: print(error)

Ahora, ejecuta el código de nuevo. Verá el siguiente mensaje de error sin descifrar el código.

 time data '19:12:2022 09:37:56 PM' does not match format '%d-%m-%Y %I:%M:%S %p'

Del mismo modo, también podemos agregar el método try-except for the parser.parse . Nos ayuda a evitar romper el código en el medio. Esto no está especialmente relacionado con el contexto de este tutorial, pero le recordará usarlo en su código.

Eso es todo para el módulo de datetime . Pasemos al siguiente módulo dateutil .

Usando dateutil

El módulo dateutil proporciona extensiones al módulo datetime . Hace que trabajar con fechas y horas sea mucho más fácil con muchos métodos de fácil uso. Instalemos el módulo con el siguiente comando.

 pip install python-dateutil

El método que nos interesa es dateutil.parser.parse . datetime cómo convertir una cadena de datetime y hora en un objeto de fecha y hora.

analizador.parse

El método parser.parse tomará una cadena de fecha y datetime y la convertirá en un formato de objeto de fecha y datetime respectivo. No necesitamos proporcionar ningún formato para este método. Convertirá automáticamente la cadena de fecha y datetime dada en un objeto de fecha y datetime . Veamos un ejemplo.

 from dateutil import parser string = "19-12-2022 09:37:56 PM" print(parser.parse(string))

Si ejecuta el código anterior, verá el siguiente resultado.

 2022-12-19 21:37:56

La cadena de fecha y datetime debe estar en un formato particular que acepte el método parser.parse . Lanzará un error si el formato de la cadena de fecha y datetime no es el formato deseado. Puede verificar todos los formatos de cadena de fecha y hora que acepta para conversiones automáticas.

Como el método parser.parse devuelve el objeto de fecha y datetime , podemos acceder a los objetos de date y time por separado como hemos visto con el módulo de datetime . Veamos el código.

 from dateutil import parser string = "19-12-2022 09:37:56 PM" print("Date:", parser.parse(string).date()) print("Time:", parser.parse(string).time())

Puede ver el siguiente resultado si ejecuta el código anterior.

 Date: 2022-12-19 Time: 21:37:56

Como puede ver, dateutil hace que sea más fácil trabajar con fechas y horas comparativamente. Puede explorar el módulo en los documentos.

Conclusión

Hemos utilizado un módulo integrado y un módulo de terceros para convertir la cadena de datetime y hora en un objeto DateTime. Hay otro módulo integrado llamado time con el que podemos convertir la cadena de datetime datetime dateutil . Inténtalo tú mismo. No será difícil ya que ya ha hecho algo similar con otros módulos.

Puede haber más bibliotecas con las que podamos lograr lo mismo. Los módulos que hemos usado en el tutorial de cosas son estándar y ampliamente utilizados. Puede explorar más sobre otros módulos y elegir el que más le convenga.

También puede explorar cómo calcular la diferencia horaria en python.

Codificación feliz