Operaciones con fechas: Sumar y restar días en Python

Operaciones con fechas en Python

Qué dolor de cabeza nos puede acarrear el realizar operaciones con fechas en Python, bueno, y en cualquier lenguaje. Yo las uso frecuentemente, especialmente cuando tengo que hacer consultas de base de datos para determinados listados. Por ejemplo: Obtener las mediciones de los sensores de los últimos dos días, devolver las alertas que ha generado el sistema en la última hora, etc. Menos mal que Python nos pone las cosas fáciles para sumar y restar fechas y tiempo a una fecha dada.

El objeto timedelta, la base para operaciones con fechas

Un objeto timedelta representa una duración de tiempo, es decir, la diferencia entre dos fechas o instantes de tiempo.
Cuando necesitemos realizar operaciones con fechas/tiempo, utilizaremos un objeto timedelta como referencia. Por ejemplo, si queremos representar una duración de tiempo de un día, crearemos un objeto timedelta del siguiente modo:

>>> import datetime
>>> datetime.timedelta(days=1)
datetime.timedelta(1)

Una vez que tenemos esto claro, veremos cómo llevar a cabo operaciones con fechas.

Restar días a una fecha en python

Para restar días a una fecha simplemente pasamos los días al objeto timedelta y se los restamos a la fecha base. Por ejemplo, si queremos representar la fecha de «ayer», haremos lo siguiente:

>>> import datetime
>>> ahora = datetime.datetime.utcnow()
>>> print(ahora)
2019-03-21 11:01:04.192582
>>> ayer = ahora - datetime.timedelta(days=1)
>>> print(ayer)
2019-03-20 11:01:04.192582

Restar horas a una fecha en python

En el siguiente ejemplo veremos cómo obtener la hora anterior a la actual:

>>> hace_una_hora = ahora - datetime.timedelta(hours=1)
>>> print(hace_una_hora)
2019-03-21 10:01:04.192582

Sumar días a una fecha en python

Para sumar días a una fecha solamente tenemos que pasar los días al objeto timedelta y se los sumamos a la fecha base. El ejemplo que sigue obtiene la fecha de mañana:

tomorrow = ahora + datetime.timedelta(days=1)
print(tomorrow)
2019-03-22 11:01:04.192582

Todos los parámetros que se pueden pasar a timedelta

En los ejemplos anteriores hemos visto cómo sumar/restar días y horas a una fecha dada. No obstante, un objeto timedelta se puede inicializar con todos los siguientes valores: weeks, days, hours, minutes, seconds, milliseconds y microseconds.

>>> import datetime
>>> datetime.timedelta(weeks=1)
datetime.timedelta(7)
>>> datetime.timedelta(days=7)
datetime.timedelta(7)

¿Quieres ser expert@ en Python? Recibe trucos Python y las últimas novedades del blog

¡Eyyy! Esto también te puede interesar 👇

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

j2logo profile

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

¿Quieres ser expert@ en Python? 🐍

❤️ He ayudado a miles de programadores/as como tú a ser mejores Pythonistas

📩 Recibe de vez en cuando trucos y scripts Python y las últimas novedades del blog

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

¿Quieres ser expert@ en PYTHON?

j2logo-pythonistas

❤️ He ayudado a miles de programadores/as como tú

📩 Recibe trucos, scripts y las novedades del blog

¿Quieres dominar Python?

Python, Guía para ser un Pythonista

El curso con el que aprender el lenguaje desde cero. Con mi soporte y ayuda.

OFERTA BLACK FRIDAY

35% de descuento