- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
def MonthsListGen(*args, **kwargs):
from datetime import datetime
if kwargs.has_key('month') and kwargs.has_key('year'):
return "%s-%s"%(kwargs['year'], "0%d"%kwargs['month'] if kwargs['month']<10 else str(kwargs['month']))
if kwargs.has_key('date'): return MonthsListGen(year = kwargs['date'].year, month = kwargs['date'].month)
if kwargs.has_key('decodeName'): return MONTH_NAMES[int(kwargs['decodeName'].split('-')[1])]
if kwargs.has_key('decodeYear'): return int(kwargs['decodeYear'].split('-')[0])
if kwargs.has_key('startDate') and kwargs.has_key('endDate'):
startDate = kwargs['startDate']
endDate = kwargs['endDate']
monthList = []
if startDate.year < endDate.year:
startDate1 = startDate
endDate1 = datetime.strptime('%d.%d.%d'%(DAYS_IN_MONTH[12], 12, startDate1.year) , '%d.%m.%Y')
monthList = MonthsListGen(startDate = startDate1, endDate = endDate1)
startDate2 = datetime.strptime('%d.%d.%d'%(1, 1, startDate1.year+1) , '%d.%m.%Y')
endDate2 = endDate
monthList += MonthsListGen(startDate = startDate2, endDate = endDate2)
return monthList
if startDate.year == endDate.year:
monthRange = range(startDate.month, endDate.month+1)
year = startDate.year
for monthNo in monthRange:
monthList.append(MonthsListGen(year = year, month = monthNo))
return monthList
return False
Вместо того, чтобы писать несколько разных функций, решил сделать одну, которая почти во всех случаях вызывает сама себя с разными параметрами.
Lure Of Chaos 10.08.2011 11:23 # 0
квааа.....
eth0 10.08.2011 11:37 # 0
Lure Of Chaos 10.08.2011 11:38 # 0
ling 10.08.2011 11:52 # 0
gegMOPO4 10.08.2011 14:30 # +1
Форматирование результата форматирования. "0%d"%kwargs['month'] if kwargs['month']<10 else str(kwargs['month']) вместо "%02d"%kwargs['month']. Конструирование даты через strptime. Ну и рекурсивный вызов с диспетчеризацией по набору опциональных аргументов — это просто вишенка.
hakimovis 10.08.2011 15:30 # 0
gegMOPO4 10.08.2011 15:46 # +4
hakimovis 10.08.2011 15:49 # 0
gegMOPO4 10.08.2011 16:18 # 0
Fai 10.08.2011 17:59 # +2
bugmenot 10.08.2011 23:20 # +7
dvs 25.08.2011 19:35 # −1
inkanus-gray 26.08.2011 00:06 # 0
Продолжение см. по ссылке: http://tools.ietf.org/html/rfc3092