Pythonで2つの日付の間の月を正確に見つけることができる必要があります。私はうまくいく解決策を持っていますが、それはあまり良くありません(エレガントのように)または速くはありません。
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
説明するために、ここで行っているのは、2つの日付を取得し、それらをiso形式からpythondatetimeオブジェクトに変換することです。次に、開始日時オブジェクトに週を追加して、月の数値が大きいかどうかを確認します(月が12月でない場合は、日付が小さいかどうかを確認します)。値が大きい場合は、リストに追加します。数ヶ月間、終了日になるまでループを続けます。
それは完璧に機能しますが、それを行うのに良い方法ではないようです...