我需要能够准确地找到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 对象。然后我循环将一周添加到开始日期时间对象并检查月份的数值是否更大(除非月份是十二月然后它检查日期是否更小),如果值更大我将其附加到列表中几个月,并不断循环,直到我到达我的结束日期。
它工作得很好,只是看起来不是一个好方法......