On Sun, Mar 15, 2009 at 4:17 PM, Steve Holden <st...@holdenweb.com> wrote:
> Roy Smith wrote:
>> In article <49bd3ab8$0$510$bed64...@news.gradwell.net>, tinn...@isbd.co.uk
>> 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 = datetime.date.today()
>>>     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?"
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>>
> 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.

Indeed, but the point is that there are likewise reasonable usecases
for the other behaviors too and one should refuse to guess in the face
of ambiguity; the std lib has, merely by default in this case, taken
this to the extreme of not implementing any of them directly.

Somewhat unrelated wish: if only dateutil were in the std lib... Alas!

Cheers,
Chris

-- 
I have a blog:
http://blog.rebertia.com
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to