After reading this article, you’ll learn how to find years and months between two dates in Python.
Table of contents
Also, see the difference between two dates in days in Python.
How to calculate years and months between two dates
Python dateutil module provides a relativedelta class, representing an interval of time. For example, we can find the difference between two dates in year, months, days, hours, minutes, seconds, and microseconds using the relativedelta class. The Below steps show how to determine the number of years and months between two dates or datetime objects.
- Import dateutil module
The dateutil is a third-party module that provides powerful extensions to the standard datetime module, available in Python.
- Convert date string to a datetime object
If a date is in a string format, we need to convert a string to a datetime object before calculating the difference in months. Use the
strptime(date_str, format)function to convert a date string into a datetime object as per the correspondingformat. For example, the string can be in the format ofyyyy-mm-dd. - Create a relativedelta object
Create a relativedelta object that represents the interval between two given dates. Use the
relativedelta(end_date, start_date)function of a dateutil module to create a relativedelta object. - Get Years, Months, and Days between two dates
Use the
relativedelta.yearsattribute to get years.
Next, Use therelativedelta.monthsto get months.
In the end, userelativedelta.daysto get days. - Get only months between two dates
Use the
relativedelta.months + relativedelta.years * 12formula to get the total months between two dates.
Example: Get Years, Months, and Days between two dates
Let’s assume we have two dates, ’14/8/2019′ and ’16/3/2022′. After executing the below example, we should get the difference of 2 Years, 7 months, and 2 days between two dates.
Output:
Years, Months, Days between two dates is 2 Years, 7 months, 2 days
Example: Get Only Months between two dates
Note: The relativedelta.months return the relative difference, i.e., from 0 to 12. So to get an absolute number, we need to calculate the number of years between two dates, multiply them by 12 and add them to relativedelta.months.
Output:
Total Months between two dates is: 31
Also, see Calculate the number of days between two dates in Python.
Difference between two dates in months using datetime module
Instead of using the dateutil module, we can use the built-in datetime module to get calendar months between two dates.
Use the below formula to calculate.
Example:
Output:
Difference between dates in months: 3
Note:
Use the datetime module when you need a difference in the calendar month. Don’t use the datetime module to calculate the exact months between two dates.
For example, the difference between ’30/1/2022′ and ‘1/2/2022’ is 2 days, but the above example shows 1 month. So always use the dateutil module to get the correct results.
Example 1: Datetime module
Example 2: Dateutil module
Calculate months between two datetime objects
There are cases in which you receive dates in a datetime object instead of a string. In such cases, you don’t need to convert them. You can directly calculate the difference between them.
Example:
Output:
Difference between dates in months: 4
