我正在尝试生成两个日期之间的月份列表。例如:
startDate = '2016-1-31'
endDate = '2017-3-26'
结果应该是:
datetime.date(2016, 1, 31)
datetime.date(2016, 2, 28)
and so on....
我正在尝试这样
startDate = '2016-1-28'
endDate = '2017-3-26'
start = date(*map(int, startDate.split('-')))
end = date(*map(int, endDate.split('-')))
week = start
dateData = []
while week <= end:
dateData.append(week)
week = week + datetime.timedelta(weeks=4)
pprint(dateData)
结果如下:
[datetime.date(2016, 1, 31),
datetime.date(2016, 2, 28),
datetime.date(2016, 3, 27),
datetime.date(2016, 4, 24),
datetime.date(2016, 5, 22),
datetime.date(2016, 6, 19),
datetime.date(2016, 7, 17),
datetime.date(2016, 8, 14),
datetime.date(2016, 9, 11),
datetime.date(2016, 10, 9),
datetime.date(2016, 11, 6),
datetime.date(2016, 12, 4),
datetime.date(2017, 1, 1),
datetime.date(2017, 1, 29),
datetime.date(2017, 2, 26),
datetime.date(2017, 3, 26)]
这里“2016, 12”和“2017, 1”重复了两次。谁能帮我解决这个问题。
原文由 nas 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
dateutil
扩展的relativedelta
方法,如下所示 -以下是输出