日付に加算・減算する際には、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)
ありがとうございます。
datetime.datetime(2016, 1, 1, 0, 0)
ではなく
datetime.datetime(2017, 1, 1, 0, 0)
かと。
ご指摘ありがとうございます。修正しました