我还没有足够的特权发表评论,但你的程序正在按要求运行。4周等于28天。2017年1月1日和1月29日之间的差异为28天,因此您将得到两次相同的月份。
你可能想重新定义你要解决的问题。但是,如果您只想解决这两个日期之间的几个月的问题,那么您的代码将需要一些扩展。您需要创建一个循环来在数年和数月内迭代。
您将需要一个开始年份和结束年份的条件,以确保您在开始月份开始,在结束月份结束。
下面是一个工作示例,它还包括列表中的开始日期和结束日期。我希望它有帮助:import datetime
startDate = '2016-1-28'
endDate = '2017-3-26'
start = datetime.date(*map(int, startDate.split('-')))
end = datetime.date(*map(int, endDate.split('-')))
week = start
dateData = []
dateData.append(start)
rangeYear = (end.year - start.year)
for i in range(rangeYear + 1):
if i == 0:
for j in range(1,13-start.month):
date = datetime.date(start.year, start.month+j, 1)
dateData.append(date)
elif (i > 0) & (i < rangeYear):
for j in range(1,12):
date = datetime.date(start.year+i, j, 1)
dateData.append(date)
elif i == rangeYear:
for j in range(1,end.month):
date = datetime.date(start.year+i, j, 1)
dateData.append(date)
dateData.append(end)