我需要能够在 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 对象。然后我循环添加一个星期到 start datetime 对象,检查这个月的数值是否更大(除非这个月是十二月,然后它检查这个日期是否更小) ,如果值更大,我将它追加到这个月的列表中,然后继续循环,直到我到达我的结束日期。
它能工作,只是看起来不像是一个很好的方法..。