In this artilce, we will discuss different ways to subtract months from the current date in python.
In python we can get the current local date and timestamp as datetime object using the datetime.today(). Now suppose we want to subtract N months from the current date and get the past date as string. Let’s see how to do that,
Subtract months from current 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 subtract N months from the current date, get the current date as datetime object. Then create a relativedelta object representing the interval of N months and then subtract that from the current date’s datetime object to get the past date.
Steps to subtract N months from the current 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: Subtract the relativedelta object from the datetime object returned by datetime.today(). It will give us a datetime object pointing to a past date i.e. N months before the current 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,
Frequently Asked:
Subtract 20 months from current date in python
from datetime import datetime from dateutil.relativedelta import relativedelta current_date = datetime.today() print('Current Date: ', current_date) # Subtract 20 months from current date n = 20 past_date = current_date - relativedelta(months=n) print('Date - 20 months before current date: ', past_date) print('Date - 20 months before current date: ', past_date.date()) # Convert datetime object to string in required format date_format = '%m/%d/%Y' past_date_str = past_date.strftime(date_format) print('Date (as string) - 20 months before current date: ', past_date_str)
Output
Current Date: 2021-06-12 19:11:34.550567 Date - 20 months before current date: 2019-10-12 19:11:34.550567 Date - 20 months before current date: 2019-10-12 Date (as string) - 20 months before current date: 10/12/2019
As today’s date is 2021-06-12 and we subtracted 20 months from it, do the final date became 2019-10-12.
As we subtracted relativedelta (of 20 months duration) from the datetime object containing today’s date, so it returned a new datetime object pointing to the past date i.e. 20 months before today. 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().
Subtract months from current 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 subtract N months from the current date.
Let’s understand with an example,
Subtract 10 months from current date in python
from datetime import datetime import pandas as pd current_date = datetime.today() print('Current Date: ', current_date) # Subtract 10 months from current date n = 10 past_date = current_date - pd.DateOffset(months=n) print('Date - 10 months before current date: ', past_date) print('Date - 10 months before current date: ', past_date.date()) # Convert datetime object to string in required format date_format = '%m/%d/%Y' past_date_str = past_date.strftime(date_format) print('Date (as string) - 10 months before current date: ', past_date_str)
Output
Current Date: 2021-06-12 19:13:27.632267 Date - 10 months before current date: 2020-08-12 19:13:27.632267 Date - 10 months before current date: 2020-08-12 Date (as string) - 10 months before current date: 08/12/2020
First we create a datetime object containing today’s local date and time. then we created a DateOffset object by passing months as 10. Then we subtracted this DateOffset object from the datetime object pointing to current date. It returned a datetime object pointing to a past date i.e. after 10 months before the current date.
Summary:
We learned about different ways to subtract months from current date in python.