[Tutor] timedelta doesnt do month

frank h. frank.hoffsummer at gmail.com
Mon Feb 5 20:55:08 CET 2007


thanks kent for your fast and comprehensive answer!

On 2/5/07, Kent Johnson <kent37 at tds.net> wrote:
>
> frank h. wrote:
> > so what is the easiest way to to get to a list of months in a given
> > timeinterval, e.g.
> >
> >  >> startdate = datetime.date(2005,2,13)
> >  >> enddate = datetime.date(2007,1,25)
> >  >> delta = enddate - startdate
> >  >> delta.days
> > 711
> >  >> delta.months
> > exceptions.AttributeError                            Traceback (most
> > recent call last)
> > AttributeError: 'datetime.timedelta' object has no attribute 'months'
> >
> > I want to compute the "monthdifference" and so I can then iterate over
> > the months from my startdate to my enddate
> > what is the easiest way to accomplish this?
>
> Because of the ambiguities of month arithmetic (what is 2005-1-31 plus
> one month?) datetime refuses to guess and does not support this. ("In
> the face of ambiguity, refuse the temptation to guess." - The Zen of
> Python) The third-party dateutil module is not as circumspect:
>
> In [1]: import datetime
>
> In [2]: startdate = datetime.date(2005,2,13)
>
> In [3]: enddate = datetime.date(2007,1,25)
>
> In [10]: from dateutil.relativedelta import relativedelta
>
> In [11]: delta = relativedelta(months=+1)
>
> In [16]: d = startdate
>
> In [17]: while d <= enddate:
>     ....:     print d
>     ....:     d += delta
>     ....:
>     ....:
> 2005-02-13
> 2005-03-13
> 2005-04-13
> 2005-05-13
> 2005-06-13
> 2005-07-13
> 2005-08-13
> 2005-09-13
> 2005-10-13
> 2005-11-13
> 2005-12-13
> 2006-01-13
> 2006-02-13
> 2006-03-13
> 2006-04-13
> 2006-05-13
> 2006-06-13
> 2006-07-13
> 2006-08-13
> 2006-09-13
> 2006-10-13
> 2006-11-13
> 2006-12-13
> 2007-01-13
>
> http://labix.org/python-dateutil
>
> Kent
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20070205/afd9943b/attachment.htm 


More information about the Tutor mailing list