Pythonで昨日や明日、来年、去年などの日付を計算する方法

Pythonで現在日付から昨日、明日、今日、去年、来年、先月、来月、月初、月末などを計算で取得する方法です。

スポンサーリンク

Pythonで現在日付からいろんな日付を計算で求める

Pythonで現在日付から昨日、明日、今日、去年、来年、先月、来月、月初、月末などを計算で取得する方法です。

Pythonには便利なモジュール「relativedelta」があるのでそれを利用します。

まずは「import」から

from datetime import datetime
from dateutil.relativedelta import relativedelta

最低、この2つはimportしてください。

では、実際の日時の計算ですが基本は「relativedelta」に計算したい日なら「days」、月なら「months」を使って指定して行います。
例えば「昨日」なら「days」に「1」を指定しけ今日の日付から引き算します。

print( datetime.strftime( datetime.today() - relativedelta( days = 1 ), "%Y/%m/%d" ) )

実行結果は

2020/05/14

になります。

ではいろいろな日時を計算してみましょう。

from datetime import datetime
from dateutil.relativedelta import relativedelta

def get_date( date_name ) :
    if date_name == "今日" :
        return    datetime.strftime( datetime.today(), "%Y/%m/%d" )

    if date_name == "昨日" :
        return    datetime.strftime( datetime.today() - relativedelta( days = 1 ), "%Y/%m/%d" )

    if date_name == "明日" :
        return    datetime.strftime( datetime.today() + relativedelta( days = 1 ), "%Y/%m/%d" )

    if date_name == "来年" :
        return    datetime.strftime( datetime.today() + relativedelta( months = 12 ), "%Y/%m/%d" )

    if date_name == "去年" :
        return    datetime.strftime( datetime.today() - relativedelta( months = 12 ), "%Y/%m/%d" )

    if date_name == "先月" :
        return    datetime.strftime( datetime.today() - relativedelta( months = 1 ), "%Y/%m" )

    if date_name == "来月" :
        return    datetime.strftime( datetime.today() + relativedelta( months = 1 ), "%Y/%m" )

    if date_name == "今月" :
        return    datetime.strftime( datetime.today() , "%Y/%m" )

    if date_name == "月初" :
        return    datetime.strftime( datetime.today().replace( day = 1 ), "%Y/%m/%d" )

    if date_name == "末日" :
        return    datetime.strftime( ( datetime.today() + relativedelta( months = 1 )).replace( day = 1 ) - relativedelta( days = 1 ), "%Y/%m/%d" )

    if date_name == "現在日時" :
        return    datetime.strftime( datetime.today(), "%Y/%m/%d %H:%M:%S" )

    if date_name == "現在時刻" :
        return    datetime.strftime( datetime.today(), "%H:%M:%S" )

    return date_name


if __name__ == '__main__':
    print( "昨日={0}".format( get_date( "昨日" )))
    print( "今日={0}".format( get_date( "今日" )))
    print( "明日={0}".format( get_date( "明日" )))
    print( "来年={0}".format( get_date( "来年" )))
    print( "去年={0}".format( get_date( "去年" )))
    print( "先月={0}".format( get_date( "先月" )))
    print( "今月={0}".format( get_date( "今月" )))
    print( "来月={0}".format( get_date( "来月" )))
    print( "月初={0}".format( get_date( "月初" )))
    print( "末日={0}".format( get_date( "末日" )))
    print( "現在日時={0}".format( get_date( "現在日時" )))
    print( "現在時刻={0}".format( get_date( "現在時刻" )))

実行結果は

昨日=2020/05/14
今日=2020/05/15
明日=2020/05/16
来年=2021/05/15
去年=2019/05/15
先月=2020/04
今月=2020/05
来月=2020/06
月初=2020/05/01
末日=2020/05/31
現在日時=2020/05/15 15:45:43
現在時刻=15:45:43

になります。

簡単ですね。

まとめ

Pythonで現在日付から昨日、明日、今日、去年、来年、先月、来月、月初、月末などを計算で取得するにはrelativedeltaが便利です。

以上、Pythonで昨日や明日、来年、去年などの日付を計算する方法でした。

タイトルとURLをコピーしました