LoginSignup
7
12

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-11-09

はじめに

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)とか、色々応用が効きます。

参考

7
12
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
12