Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Desarrollo Última actualización: 25 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

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 los tipos de datos incorporados.

Los tipos de datos personalizados como datetime necesitan módulos adicionales para las conversiones. Necesitamos módulos, especialmente para las conversiones datetime, ya que trabajar con ellas nunca ha sido fácil para los programadores. Por suerte, python tiene módulos incorporados para trabajar con datetime.

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

¿Por qué necesitamos convertir una cadena datetime en un objeto datetime?

Cuando tenemos que trabajar con fechas, no es fácil hacerlo si están en formato cadena. Convertirlas a formato datetime hace que trabajar con ellas 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 generales de cadenas, que no necesitaremos al trabajar con fechas.

Digamos que tenemos que comparar dos fechas. Si están en formato cadena, podremos compararlas correctamente. Si están en formato datetime, podemos utilizar los operadores de comparación como si fueran números.

Este es sólo un escenario en el que la conversión a formato datetime facilita las cosas. Hay un montón de escenarios como sumar fechas, descansar, manejar zonas horarias, etc., donde convertir cadena datetime un objeto datetime nos hace la vida más fácil que nunca.

Dicho esto, veamos diferentes formas de convertir una cadena datetime en un objeto datetime. Utilizaremos los módulos datetime incorporados y dateutil de terceros para convertir la cadena datetime en objeto datetime. Empecemos con el módulo datetime

Uso de datetime

El datetime es un módulo incorporado 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. Utilizaremos la clase datetime. datetime para la conversión.

La clase datetime. datetime tiene muchos métodos. Nos interesa el método strptime que nos ayudará en la conversión. Vamos a comprobarlo.

datetime.strptime

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

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á la siguiente salida.

2022-12-19 21:37:56

Hemos tomado una cadena datetime y la hemos convertido en objeto datetime utilizando el método datetime. strptime. Asegúrese de que el formato que está proporcionando al método coincide exactamente con la cadena datetime . Si no coinciden, entonces puede obtener un error o una salida incorrecta.

Hemos utilizado algunos códigos de formato para el formato datetime. Puede consultar todos los códigos de formato en la documentación.

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

from datetime import datetime

string = "19-12-2022 09:37:56 PM"
formatting = "%d-%m-%Y %I:%M:%S %p"

## obtener la fecha por separado
print("Fecha:", datetime.strptime(string, formatting).date())

## obtener la hora por separado
print("Hora:", datetime.strptime(string, formatting).time())

Ejecute el código anterior y verá la siguiente salida.

Fecha: 2022-12-19
Hora: 21:37:56

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

Hemos proporcionado las cadenas y formatos correctos para el método datetime.strptime que hemos visto anteriormente. Si no los proporcionamos correctamente, entonces 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 arrojará un error porque el formato no coincide con la cadena datetime. Para manejar este tipo de errores, podemos utilizar el try-except de Python. Añámoslo.

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, vuelva a ejecutar el código. Verá el siguiente mensaje de error sin romper el código.

los datos de tiempo '19:12:2022 09:37:56 PM' no coinciden con el formato '%d-%m-%Y %I:%M:%S %p'

Del mismo modo, también podemos añadir el try-except para el método parser.parse que viene. Esto 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á que debe utilizarlo en su código.

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

Uso de 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 un montón de 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. Veamos cómo convertir una cadena datetime en un objeto datetime.

parser.parse

El método parser.parse tomará una cadena datetime y la convertirá en un formato de objeto datetime respectivo. No necesitamos proporcionar ningún formato para este método. Convertirá automáticamente la cadena datetime dada en objeto 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á la siguiente salida.

2022-12-19 21:37:56

La cadena datetime debe estar en un formato concreto que el método parser.parse acepte. Arrojará un error si el formato de la cadena datetime no es la deseada. Puede comprobar todos los formatos de cadena datetime que acepta para realizar conversiones automáticas.

Como el método parser.par se devuelve un objeto datetime, podemos acceder a los objetos fecha y hora por separado como hemos visto con el módulo datetime. Veamos el código.

from dateutil import parser

string = "19-12-2022 09:37:56 PM"
print("Fecha:", parser.parse(string).date())
print("Hora:", parser.parse(string).time())

Puede ver la siguiente salida si ejecuta el código anterior.

Fecha: 2022-12-19
Hora: 21:37:56

Como puede ver dateutil facilita comparativamente el trabajo con las fechas y las horas. Puede explorar el módulo en la documentación.

Conclusión

Hemos utilizado un módulo incorporado y otro de terceros para convertir la cadena datetime en un objeto DateTime. Existe otro módulo incorporado llamado time con el que podemos convertir la cadena datetime en un objeto DateTime de forma similar a los módulos datetime y dateutil. Pruébelo usted mismo. No será difícil puesto que ya ha hecho algo similar con otros módulos.

Puede que haya más bibliotecas con las que podamos conseguir lo mismo. Los módulos que hemos utilizado en thing tutorial 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.

Feliz Codificación 🙂

  • Hafeezul Kareem Shaik
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre desarrollo
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder