2 回答
TA贡献1934条经验 获得超2个赞
这是仅使用datetime模块来完成此操作的一种方法:
>>> from datetime import date, timedelta
>>> from pprint import pprint
>>> def next_month(x):
'Advance the first of the month, wrapping the year if necessary'
if x.month < 12:
return x.replace(month=x.month+1, day=1)
return x.replace(year=x.year+1, month=1)
>>> def getMonthRanges(startDate, endDate):
result = []
first = startDate
while first < endDate:
nm = next_month(first)
last = min(endDate, nm - timedelta(days=1))
result.append([str(first), str(last)])
first = nm
return result
>>> pprint(getMonthRanges(date(2011, 9, 11), date(2013, 4, 24)))
[['2011-09-11', '2011-09-30'],
['2011-10-01', '2011-10-31'],
['2011-11-01', '2011-11-30'],
['2011-12-01', '2011-12-31'],
['2012-01-01', '2012-01-31'],
['2012-02-01', '2012-02-29'],
['2012-03-01', '2012-03-31'],
['2012-04-01', '2012-04-30'],
['2012-05-01', '2012-05-31'],
['2012-06-01', '2012-06-30'],
['2012-07-01', '2012-07-31'],
['2012-08-01', '2012-08-31'],
['2012-09-01', '2012-09-30'],
['2012-10-01', '2012-10-31'],
['2012-11-01', '2012-11-30'],
['2012-12-01', '2012-12-31'],
['2013-01-01', '2013-01-31'],
['2013-02-01', '2013-02-28'],
['2013-03-01', '2013-03-31'],
['2013-04-01', '2013-04-24']]
添加回答
举报