我需要在Python中准确地找到两个日期之间的月份。 我有一个解决方案,但它不是非常好(即优雅)或快速。
dateRange = [datetime.strptime(dateRanges[0], "%Y-%m-%d"), datetime.strptime(dateRanges[1], "%Y-%m-%d")]
months = []
tmpTime = dateRange[0]
oneWeek = timedelta(weeks=1)
tmpTime = tmpTime.replace(day=1)
dateRange[0] = tmpTime
dateRange[1] = dateRange[1].replace(day=1)
lastMonth = tmpTime.month
months.append(tmpTime)
while tmpTime < dateRange[1]:
if lastMonth != 12:
while tmpTime.month <= lastMonth:
tmpTime += oneWeek
tmpTime = tmpTime.replace(day=1)
months.append(tmpTime)
lastMonth = tmpTime.month
else:
while tmpTime.month >= lastMonth:
tmpTime += oneWeek
tmpTime = tmpTime.replace(day=1)
months.append(tmpTime)
lastMonth = tmpTime.month
所以,我在这里的做法是将两个日期从ISO格式转换为Python datetime对象。然后我循环添加一个星期到开始日期对象,并检查月份的数值是否更大(除非月份是12月,则检查日期是否更小)。如果值更大,则将其附加到月份列表中,并继续循环直到达到结束日期。
它完美地工作,只是似乎不是一种好的方法...