日付に月単位で加算減算する (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)
関連記事:

日付に月単位で加算減算する (relativedelta)」への2件のフィードバック

  1. 余命3年

    ありがとうございます。
    datetime.datetime(2016, 1, 1, 0, 0)
    ではなく
    datetime.datetime(2017, 1, 1, 0, 0)
    かと。

    返信
    1. python-tksssk 投稿作成者

      ご指摘ありがとうございます。修正しました

      返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)