How to add months to a date (datetime object)?

Steve Holden steve at
Mon Mar 16 00:17:20 CET 2009

Roy Smith wrote:
> In article <49bd3ab8$0$510$bed64819 at>, tinnews at 
> wrote:
>> I have a date in the form of a datetime object and I want to add (for
>> example) three months to it.  At the moment I can't see any very
>> obvious way of doing this.  I need something like:-
>>     myDate =
>>     inc = datetime.timedelta(months=3)
>>     myDate += inc
>> but, of course, timedelta doesn't know about months. I had a look at
>> the calendar object but that didn't seem to help much.
> Well, before you can "add three months" to something, you need to explain 
> what that means.
> What is Nov 29th plus 3 months?
> What is Jan 31st plus 3 months?
> Months are different lengths.  Asking to "add 3 months" is kind of like 
> asking, "If I'm somewhere in the continental US (east of the Mississippi 
> River) and move three states to the west, how many miles have I moved?"
> --
OK, suppose I sign a contract on Nov 30 that requires me to make
quarterly payments. When is my next payment due?

The use case doesn't seem that unreasonable to me.

Steve Holden           +1 571 484 6266   +1 800 494 3119
Holden Web LLC       
Want to know? Come to PyCon - soon!

More information about the Python-list mailing list