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