In this artilce we will discuss different ways to add months to a given date in python.
Suppose we have a date ’21/1/2021′ and we want to add N months to it and N can be 1, 20, 50 or any other number. We want the final date after adding N months in the given date. Let’s see how to do that,
Add months to a date in Python using relativedelta
In python, the dateutil module provides a class relativedelta, which represents an interval of time. The relativedelta class has following attributes which tells about the duration,
- Year
- Month
- Day
- Hours
- Minutes
- Seconds
- Microseconds
To add N months in a given date, create a relativedelta object representing the interval of N months and then add that to the datetime object to get the final date.
Detailed steps to add N months to date are as follows,
- Step 1: If the given date is in a string format, then we need to convert it to the datetime object. For that we can use the datetime.strptime() function. Whereas, if the given date is already a datetime object, then you can skip this step.
- Step 2: Create an object of relativedelta, to represent an interval of N months. For that, pass the argument months with value N in the relativedelta constructor.
- Step 3: Add the relativedelta object to the datetime object. It will give us a datetime object point to a date i.e. N months after the given date.
- Step 4: If you want the final date in string format, then convert the datetime object to string using strftime(). You can pass the format string as argument and it will convert the datetime object to a string of the specified format.
Let’s understand with an example,
Add 20 months to a date in python
Frequently Asked:
- Create timezone aware datetime object in Python
- Convert timedelta to seconds in Python
- Add months to a date in Python
- Add days to a date in Python
from datetime import datetime from dateutil.relativedelta import relativedelta given_date = '21/1/2021' print('Give Date: ', given_date) date_format = '%d/%m/%Y' dtObj = datetime.strptime(given_date, date_format) # Add 20 months to a given datetime object n = 20 future_date = dtObj + relativedelta(months=n) print('Date after 20 months: ', future_date) print('Date after 20 months: ', future_date.date()) # Convert datetime object to string in required format future_date_str = future_date.strftime(date_format) print('Date after 20 months (as string): ', future_date_str)
Output
Give Date: 21/1/2021 Date after 20 months: 2022-09-21 00:00:00 Date after 20 months: 2022-09-21 Date after 20 months (as string): 21/09/2022
We added 20 months in the date ’21/1/2021′ to make it ’21/09/2022′.
As we added relativedelta (of 20 months duration) to the datetime object, so it returned a new datetime object pointing to the final date. As datetime object has the the timestamp also, therefore it also got printed. If you want date only, then you can fetch the date object from datetime object using date() function, just like we did in above example. In the end we converted the datetime object to the required string format using datetime.strftime().
Add months to a date in Python using Pandas
Pandas provide a class DateOffset, to store the duration or interval information. It is mostly used to increment or decrement a timestamp. It can be used with datetime module to to add N months to a date.
Let’s understand with an example,
Add 10 months to a date in python
from datetime import datetime import pandas as pd given_date = '1/21/2021' print('Give Date: ', given_date) # Convert date string to datetime object date_format = '%m/%d/%Y' dtObj = datetime.strptime(given_date, date_format) # Add 10 months to a given datetime object n = 10 future_date = dtObj + pd.DateOffset(months=n) print('Date after 10 months: ', future_date) print('Date after 10 months: ', future_date.date()) # Convert datetime object to string in required format future_date_str = future_date.strftime(date_format) print('Date after 10 months (as string): ', future_date_str)
Output
Give Date: 1/21/2021 Date after 10 months: 2021-11-21 00:00:00 Date after 10 months: 2021-11-21 Date after 10 months (as string): 11/21/2021
We created a DateOffset object by passing months as 10. Then we added this DateOffset object to the datetime object. It returned a datetime object pointing to the another date i.e. after 10 months from the given date.
Summary:
We learned about different ways to add months to a date in python.