This function adds one year to the delivery date over the past months:
from datetime import date from dateutil.relativedelta import relativedelta def add_one_year_to_passed_months(date): today = date.today() if date.month < today.month: return date + relativedelta(years=1) return date
Leaf years, such as 2012, are respected relativedelta as follows:
>>> add_one_year_to_passed_months(date(2012, 2, 28)) datetime.date(2013, 2, 28) >>> add_one_year_to_passed_months(date(2012, 2, 29)) datetime.date(2013, 2, 28) >>> add_one_year_to_passed_months(date(2012, 3, 1)) datetime.date(2013, 3, 1)
source share