En esta guía rápida del módulo datetime
de Python, aprenderás a analizar fechas, extraer información significativa de las mismas, manejar objetos timedelta
y mucho más.
Así que, sin más preámbulos, ¡comencemos a contar el tiempo con Python!
La mayoría de los lenguajes de programación proporcionan bibliotecas para el manejo fácil de las fechas. Python ofrece el potente módulo datetime
con sus numerosas funciones y una lúcida documentación que facilita el análisis de las fechas.
Este artículo enumera algunas de las funciones más importantes de este módulo, cómo puede aplicarse en situaciones del mundo real y algunas cosas difíciles que hay que tener en cuenta al utilizarlo.
Cómo convertir marcas de tiempo en objetos datetime
usando strptime()
Las fechas pueden darnos mucha información como el mes, el año, el día, el día de la semana y si es un día festivo o no. strptime()
convierte una marca de tiempo en forma de cadena de texto en un objeto datetime
que nos da muchas funcionalidades extra. Esta función espera una cadena de texto y el formato de la marca de tiempo.
La cadena 21-02-2021 18:46:00 se convierte en un datetime
adecuado utilizando el formato especificado. Algunas de las directivas más útiles son:
%d
para el día del mes como un decimal relleno de ceros como 01, 02, 03.%m
para el mes como un número decimal relleno de ceros.%Y
para el año con el siglo como número decimal.%H
para el reloj de 24 horas con un valor de hora relleno de cero.%M
para los minutos con un valor de cero, y%S
para los segundos rellenados con cero.
Esta colección de especificadores de formato es suficiente para empezar. Para más opciones, puede consultar los documentos enlazados aquí.
Cómo obtener el valor de la marca de tiempo actual
Supongamos que quiere almacenar datos, en una base de datos con la marca de tiempo actual como clave. Para obtener la marca de tiempo actual, sólo necesitas 1 línea de código:
Cómo saber qué día es
Digamos que necesitamos saber el día de la semana. Podemos utilizar la función weekday()
que devuelve un código numérico para el día de la semana, del cero al seis, donde el cero representa el lunes, el uno el martes, y así sucesivamente.
La salida podría utilizarse con una sentencia de conmutación para convertir el código numérico en el nombre del día requerido o podría utilizar una lista como esta:
Cómo generar una lista de fechas a partir de una fecha dada
Supongamos que sabemos cuántas pizzas ha pedido la gente hasta hoy y nos interesa predecir las ventas de pizzas para la semana siguiente.
Así que, dada la fecha de hoy, necesitamos todas las fechas de la próxima semana para nuestro análisis requerido. Pero no queremos preocuparnos por los años bisiestos, los años del siglo, etc. Esta es una forma de hacerlo.
Cómo trabajar con objetos timedelta
Como su nombre lo indica, los objetos timedelta
representan un tiempo de duración entre dos fechas. Digamos que tenemos dos fechas y necesitamos saber cuánto tiempo ha pasado entre ellas.
Los objetos timedelta
requieren varios argumentos como días, segundos, microsegundos, milisegundos, minutos, horas y semanas. Los valores por defecto para todos son cero. Averigüemos la diferencia en horas entre 2 fechas.
¿Qué ha fallado? Timedelta
no almacena nada internamente excepto los días, segundos y microsegundos, así que tenemos que convertirlos como se muestra a continuación:
Cómo obtener una representación de cadenas de fechas a partir de objetos datetime
o Date usando strftime
Si, imprimimos el propio objeto datetime
, la fecha se imprime en formato ISO. Usando strftime
, pasamos una cadena de texto, para controlar la representación en cadena de la fecha.
Conclusión
Si has leído hasta aquí, felicidades - has aprendido a analizar las fechas de acuerdo con un formato especificado, obtener el valor de la marca de tiempo actual, obtener el día de la semana, obtener una lista de fechas, utilizar objetos timedelta y obtener la fecha como una cadena de texto de vuelta de los objetos. Vaya...
Se trata de una recopilación basada en mis numerosas búsquedas en Internet y en la interminable lectura de los documentos oficiales.
Gracias por sacar tiempo de tu apretada agenda para leer esto. Espero que hayas disfrutado leyéndolo tanto como a mí me ha gustado escribirlo. ¡Que te diviertas analizando fechas en Python!
Traducido del artículo de Suchandra Datta - Python's datetime Module – How to Handle Dates in Python