How do I calculate the date six months from the current date using the datetime Python module?

Python does not have a built-in data type for dates, but we can import the datetime module to work with dates as date objects. Calculating dates that are months apart from a given date is challenging due to the varying length of months in our calendar system. This article demonstrates how to calculate a date six months from the current date using Python's datetime module.

There are two main approaches to calculate a date six months from now in Python ?

Using relativedelta() Function

The relativedelta type is designed to be applied to an existing datetime object and can either indicate a period of time or replace specific elements of that datetime. This is the most accurate method for month-based calculations since it properly handles varying month lengths.

For the relativedelta class to perform month-based calculations, the dateutil package must be installed using pip install python-dateutil.

Example − Calculating with Current Date

Here's how to calculate six months from the current date ?

from datetime import date
from dateutil.relativedelta import relativedelta

# Adding six months to the current date
current_date = date.today()
six_months_from_now = current_date + relativedelta(months=6)

print(f"Current date: {current_date}")
print(f"Six months from now: {six_months_from_now}")
Current date: 2025-04-17
Six months from now: 2025-10-17

Example − Calculating with a Specific Starting Date

You can also calculate six months from any specific date ?

from datetime import date
from dateutil.relativedelta import relativedelta

start_date = date(2022, 1, 8)
six_months_later = start_date + relativedelta(months=6)

print(f"Start date: {start_date}")
print(f"Six months later: {six_months_later}")
Start date: 2022-01-08
Six months later: 2022-07-08

Example − Including Time with datetime Objects

For more precise calculations including time, use datetime objects ?

from datetime import datetime
from dateutil.relativedelta import relativedelta

current_datetime = datetime.now()
six_months_later = current_datetime + relativedelta(months=6)

print(f"Current date and time: {current_datetime}")
print(f"Date and time 6 months from now: {six_months_later}")
Current date and time: 2025-04-17 15:57:48.032064
Date and time 6 months from now: 2025-10-17 15:57:48.032064

Using timedelta() Function

The timedelta class in the datetime module represents a duration − the difference between two dates, times, or datetime instances. While less accurate for month calculations, it can provide approximations.

Example − Average Days Approximation

This method approximates six months as 6 × (365/12) days ?

import datetime

current_date = datetime.date.today()
# Approximate six months as 6 * (365/12) days
six_months_approx = current_date + datetime.timedelta(days=int(6 * 365 / 12))

print(f"Current date: {current_date}")
print(f"Approximate six months later: {six_months_approx}")
Current date: 2025-04-17
Approximate six months later: 2025-10-16

Example − Fixed 30−Day Month Approximation

This method assumes each month has exactly 30 days ?

import datetime

current_date = datetime.date.today()
# Approximate six months as 6 * 30 days
six_months_approx = current_date + datetime.timedelta(days=30 * 6)

print(f"Current date: {current_date}")
print(f"Six months later (30-day approximation): {six_months_approx}")
Current date: 2025-04-17
Six months later (30-day approximation): 2025-10-14

Comparison

Method Accuracy Handles Month Variations Best For
relativedelta() High Yes Precise month calculations
timedelta(365/12) Medium No General approximations
timedelta(30 days) Low No Simple estimations

Conclusion

Use relativedelta() for accurate month-based calculations as it properly handles varying month lengths. The timedelta() methods provide approximations but may be inaccurate for specific dates due to different month lengths.

Updated on: 2026-03-24T17:13:00+05:30

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements