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で昨日や明日、来年、去年などの日付を計算する方法でした。