Operaciones con fechas: Sumar y restar tiempo en Python

Operaciones con fechas en Python
Share on facebook
Share on twitter
Share on linkedin

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

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

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)

¿Me ayudas a compartir el post? 🤗🤟🏻

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

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

Últimos posts

¿Quieres ser un auténtico Pythonista? 🐍

Recibe de vez en cuando trucos, scripts y tutoriales Python en español para dominar el lenguaje. No es SPAM. Date de baja cuando quieras.

* Te informo de que los datos de carácter personal que proporciones serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es el envío de trucos, scripts, mis publicaciones así como correos comerciales. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en mi plataforma de email marketing MailRelay que garantiza las medidas de seguridad encaminadas a proteger la privacidad. 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 POLITICA DE PRIVACIDAD

Tutoriales Python en español

👉🏻 🐍 Tutoriales Python. ¿Por qué Python?