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 corresponding`format`

. For example, the string can be in the format of`yyyy-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.years`

attribute to get years.

Next, Use the`relativedelta.months`

to get months.

In the end, use`relativedelta.days`

to get days.**Get only months between two dates**Use the

`relativedelta.months + relativedelta.years * 12`

formula 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