Calcular fecha usando Python Timedelta Meses

Haider Ali 21 junio 2023
  1. Función de fecha y hora de Python
  2. Use relativedelta() para calcular la fecha usando Python
Calcular fecha usando Python Timedelta Meses

En esta guía, aprenderemos el uso de datetime en Python utilizando timedelta. Veremos cómo podemos calcular la fecha seis meses a partir de la fecha actual o cualquier otra fecha.

¡Vamos a sumergirnos!

Función de fecha y hora de Python

Bueno, primero, veremos cómo funciona la función datetime y cuál es el inconveniente que limita las funcionalidades para nosotros. Lo primero que debe saber es importar la fecha y hora en su código.

import datetime

Después de eso, creará la instancia de datetime. Una vez que haya creado la instancia, puede utilizar sus funciones aritméticas.

Puede restar un día y un mes. Echa un vistazo al siguiente código.

# instance of datetime
date = datetime.datetime(2022, 2, 1)
# subtracting 1 from the month
date = date.replace(month=date.month - 1)
print(date)

Producción :

2022-01-01 00:00:00

Como puede ver en el código anterior, con la ayuda de una función aritmética, hemos restado un mes a la fecha que establecimos anteriormente. Pero aquí hay una trampa, ¿qué pasa si tratamos de restar un mes del resultado anterior?

El código nos dará un error. Echar un vistazo.

date = date.replace(month=date.month - 1)

Producción :

    date = date.replace(month=date.month-1)
ValueError: month must be in 1..12

La función datetime no nos permite usar funciones aritméticas y restar un año entero porque no lo soporta. De manera similar, si tuviéramos que agregar 1 o 2 mientras la fecha actual se encuentra en los últimos días de diciembre, daría el mismo error.

# if you add 1 in date, it will throw an error because it doesn't support it
date = datetime.datetime(2022, 12, 1)
date_ = date.replace(month=date_1.month + 1)

Producción :

    date = date.replace(month=date.month+1)
ValueError: month must be in 1..12

Entonces, volviendo a la pregunta, ¿cómo podemos calcular la fecha seis meses a partir de la fecha actual o cualquier otra fecha? La respuesta está en usar relativedelta.

Use relativedelta() para calcular la fecha usando Python

Antes de seguir adelante y usar relativedelta en nuestro código Python, necesitamos instalar dateutil para importar el relativedelta desde allí. Ejecute lo siguiente en su símbolo del sistema para instalar el dateutil.

pip install python-dateutil

Una vez instalado, debe importar el relativedelta desde él.

from dateutil import relativedelta

Después de eso, necesitamos usar tanto datetime como relativedelta para resolver el problema actual. Echa un vistazo al siguiente código.

date = datetime.datetime(2022, 1, 1)
# created the instance of the datetime and set the current date as 2022,1,1

Ahora, crearemos la instancia de relativedelta y estableceremos el valor del mes como 1.

r_date = relativedelta.relativedelta(months=1)

Ahora, todo lo que tenemos que hacer es restar la instancia de relativedelta de la instancia de datetime. Nos dará nuestra respuesta deseada.

# if you subtract the relativedelta variable with the date instance, it will work correctly and change the year too.
new_date = date - r_date
print(new_date)

Producción :

2021-12-01 00:00:00

De manera similar, si tuviéramos que agregar 1 a la fecha, nos daría el resultado deseado.

Ahora podemos usar esta técnica para calcular cualquier fecha a partir de la fecha actual. Eso responde cómo podemos calcular la fecha de seis meses a partir de la fecha actual.

Autor: Haider Ali
Haider Ali avatar Haider Ali avatar

Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.

LinkedIn

Artículo relacionado - Python Date