Pull Last 3 Months
Tim Chase
python.list at tim.thechases.com
Wed Oct 17 20:47:50 EDT 2007
> It looks like you copied the month 2 case from the month 1 case
> because you forgot to edit it afterwards. Anyway, a bit of modulo-12
> arithmetic avoids special cases, and allows the number of months to be
> generalised:
nice...
> import datetime
>
> months = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split()
>
> def last_months(n):
> month = datetime.date.today().month
> return [months[(month - i - 1) % 12] for i in range(n)]
>
> print last_months(3)
In the event that you need them in whatever your locale is, you
can use the '%b' formatting to produce them:
import datetime
month_map = dict(
(n, datetime.date(2000,n+1,1).strftime('%b'))
for n in xrange(12)
)
The function can then be written as either a generator:
def last_months(months):
this_month = datetime.date.today().month - 1
for i in xrange(months):
yield month_map[(this_month-i) % 12]
or as a function returning a list/tuple:
def last_months(months):
this_month = datetime.date.today().month - 1
return [month_map[(this_month - i) % 12]
for i in xrange(months)]
More information about the Python-list
mailing list