サイトアイコン Python Snippets

日付に月単位で加算減算する (relativedelta)

日付に加算・減算する際には、timedelta が使えますが、月の加算はできません。

日付の加算 減算 timedelta | Python Snippets

標準ライブラリではありませんが、日付処理のデファクトスタンダードともいえる python-dateutil モジュールを使用することで月の加算ができる relativedeltaが使えます。

ライブラリをインストールします。

$ pip install python-dateutil
....

relativedelta(months=1) とすることで直感的に1ヶ月加算することができます。

>>> import datetime
>>> from dateutil.relativedelta import relativedelta
>>> datetime.datetime(2016, 12, 1) + relativedelta(months=1)  #年をまたいだ1ヶ月加算
datetime.datetime(2017, 1, 1, 0, 0)

これを応用することで簡単に月末日を得ることもできます。

>>> datetime.datetime(2015, 2, 1) + relativedelta(months=1, days=-1)  # 2/1から1ヶ月加算して1日減算
datetime.datetime(2015, 2, 28, 0, 0)
>>> datetime.datetime(2016, 2, 1) + relativedelta(months=1, days=-1)
datetime.datetime(2016, 2, 29, 0, 0)
関連記事:

モバイルバージョンを終了