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.

from datetime import datetime

d = datetime.strptime("21-02-2021 18:46:00", "%d-%m-%Y %H:%M:%S")
Cadena de texto a objecto datetime

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:

# Obtener la marca de tiempo actual

from datetime import datetime
print(datetime.now())
datetime

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:

Obtener la fecha de ahora

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.

Generar fiestas

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.

Imprimiendo objetos deltatime

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.

Error

¿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:

Mirar objeto datetime

Cómo obtener una representación de cadenas de fechas a partir de objetos datetime o Date usando strftime

Obtener fechas a partir de nuestro formato

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