Python
date
datetime

pythonで日付処理のループをする方法

はじめに

pythonを使ってる時に、日付のループ処理をしたい時用の関数をちょこちょこ自作して使うからまとめます。

指定期間内の日付を返す関数

rangeちっくに指定期間内の日付を返します。
rangeの仕様とは異なりますが、利便性を考え、開始日と終了日を含む処理になっています。

指定期間内の日付を返す
from datetime import datetime, timedelta

def date_range(start_date: datetime, end_date: datetime):
    diff = (end_date - start_date).days + 1
    return (start_date + timedelta(i) for i in range(diff))

基準日からN日までの日付を返す関数

基準日を「含めて」N日分の日付を返します。

基準日からN日までの日付を返す
def date_back_range(base_date:datetime, period: int):
    yield from date_range(base_date-timedelta(period-1), base_date)

補足

relativedeltaに置き換えれば、月ごとのループも容易です。

この2つを組み合わせれば、Nヶ月前の月初から指定した月の月末の日付を返す関数(例えば、1/1~3/31)とか、色々応用が効きます。

参考