[Python] 1ヶ月後や1年後や月初や月末を簡単に求める(python-dateutil)
こんにちは、@yoheiMuneです。
今日はPythonの日付演算で便利なpython-dateutilを使って、1ヶ月後などを簡単に求める方法をブログに書きたいと思います。

Python標準のtimedeltaでも日付の加減算ができるのですが、指定できる引数に限りがあり使いづらい場合があります。
インストールは簡単でpipで行うことができます。
dateutil - powerful extensions to datetime — dateutil 2.5.2 documentation
最後になりますが本ブログでは、フロントエンド・Python・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
今日はPythonの日付演算で便利なpython-dateutilを使って、1ヶ月後などを簡単に求める方法をブログに書きたいと思います。

目次
python-dateutilとは
python-dateutilは、Pythonの日付処理をより簡単に行えるためのライブラリです。いろいろな機能があるのですが今回はその中で、relativedeltaを用いた日付の加減算処理を紹介したいと思います。Python標準のtimedeltaでも日付の加減算ができるのですが、指定できる引数に限りがあり使いづらい場合があります。
# timedeltaで指定できる内容
# https://docs.python.org/3.5/library/datetime.html
class datetime.timedelta(days=0,
seconds=0,
microseconds=0,
milliseconds=0,
minutes=0,
hours=0,
weeks=0)
# relativedelta(python-dateutil)で指定できる内容
# https://github.com/dateutil/dateutil/blob/master/dateutil/relativedelta.py
class relativedelta(object):
def __init__(self, dt1=None, dt2=None,
years=0, months=0, days=0, leapdays=0, weeks=0,
hours=0, minutes=0, seconds=0, microseconds=0,
year=None, month=None, day=None, weekday=None,
yearday=None, nlyearday=None,
hour=None, minute=None, second=None, microsecond=None):
relaticedeltaの方が指定できる内容が数多くあるので(リファレンス見ないとよくわからんやつもある)、便利に日付の演算を行うことができます。インストールは簡単でpipで行うことができます。
$ pip install --upgrade python-dateutilそれでは実際に使ってみたいと思います。
python-dateutilを用いて、簡単に1ヶ月後などを求める
それではさっそく使ってみたいと思います。from datetime import datetime, date, timedelta from dateutil.relativedelta import relativedelta # today today = date.today() print(today) # => 2016-04-19 # 1ヶ月後 dt = today + relativedelta(months=1) print(dt) # => 2016-05-19 # 1年後 dt = today + relativedelta(years=1) print(dt) # => 2017-04-19 # 月末 dt = today + relativedelta(months=1) - timedelta(days=today.day) print(dt) # => 2016-04-30 # 月初(これはtimedeltaで普通にできるけど、一応書いてみる) dt = today - timedelta(days=today.day-1) print(dt) # => 2016-04-01こんな感じで、
timedeltaでは計算するのが大変なところもいい感じに処理することができます。参考資料
今回の実装を行うために、以下を参照しました。ありがとうございます。dateutil - powerful extensions to datetime — dateutil 2.5.2 documentation
最後に
Pythonは言語そのものが非常に使いやすいのですが、こーゆうライブラリがちょこちょこあるとさらに使いやすさアップでいいですね。とても良いエコシステムだなと感じています。これからもPythonでの実装力を上げるべく、バシバシとブログを書きたいと思います。最後になりますが本ブログでは、フロントエンド・Python・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!






