【Python】日付の操作まとめ
Pythonで月末日や休日判定などに用いる日付処理です。
記載内容
①今日の日付を表示する(datetime)
②先月末日を取得する(datetime)
③先月末日を取得する(calendar)
④先月同日、翌月同日を取得する
⑤平日か休日かを判定する
②先月末日を取得する(datetime)
③先月末日を取得する(calendar)
④先月同日、翌月同日を取得する
⑤平日か休日かを判定する
①今日の日付を表示する(datetime)
- 今日の日付をyyyymmdd形式で表示します
- strftime() は日付、時間を文字列へ変換する関数です
import datetime today = datetime.datetime.today().strftime('%Y%m%d') print(today)
【実行結果】
20201130
②先月末日を取得する(datetime)
- 今日の年月日から今日の日付を引くことで先月の末日を求めます
import datetime today = datetime.datetime.today() last_month = today - datetime.timedelta(days=today.day) print(today) print(last_month.strftime('%Y%m%d'))
【実行結果】
2020-12-20 14:50:04.505901 20201130
③先月末日を取得する(calendar)
- calendar関数を使用して先月末日を取得します
- calendar.monthrange(year, month) は年・月を引数として、その月初の曜日と日数を返す関数
- ここでは日数しか必要ないので[1]を指定して変数daysに格納しています
import calendar import datetime from dateutil import relativedelta today = datetime.datetime.today() last_month = today - relativedelta.relativedelta(months=1) days = calendar.monthrange(last_month.year, last_month.month)[1] last_month_day = datetime.date(last_month.year, last_month.month, days) print(last_month_day)
【実行結果】
2020-11-30
④先月同日、翌月同日を取得する
- relativedelta を使用すると先月と翌日の日付が容易に求められます
import datetime from dateutil import relativedelta today = datetime.datetime.today() last_month = today - relativedelta.relativedelta(months=1) next_month = today + relativedelta.relativedelta(months=1) print(today) print(last_month) print(next_month)
【実行結果】
2020-12-20 15:01:51.746379 2020-11-20 15:01:51.746379 2021-01-20 15:01:51.746379
⑤平日か休日かを判定する
- weekday() は月曜~日曜を0~6で返す関数です
- 返ってくる数字を調べて平日か休日かを判定します
- strptime() は文字列から日付、時間へ変換する関数です
from datetime import date import datetime def check_date(input_ymd): check_date = datetime.datetime.strptime(input_ymd, '%Y%m%d') yy = int(check_date.strftime('%Y')) mm = int(check_date.strftime('%m')) dd = int(check_date.strftime('%d')) if date(yy, mm, dd).weekday() < 5: date_result = '平日' else: date_result = '休日' return date_result # -------------------- # メイン処理 # -------------------- input_ymd = '20201220' print(check_date(input_ymd))
【実行結果】
休日
参考書
この本は所々に書き込む余白があるので「自分の本」が育ちます。
リンク
最近のコメント