1. はじめに
Pythonで日付や時間を扱う場面は非常に多くあります。その中でも「現在の曜日を取得する」処理は、予定表の作成、業務処理の自動化、週末・平日の判定など、さまざまな実務で活用されています。
この記事では、Pythonのdatetime
モジュールに含まれるweekday()
およびisoweekday()
関数を使って、現在の曜日を数値で取得する方法を丁寧に解説します。
初心者にもわかりやすいコード例や注意点、実務での活用方法まで幅広くカバーしていますので、ぜひ最後までご覧ください。
2. Pythonで現在の曜日を取得する基本:weekday() と isoweekday()
2-1. weekday():月曜日を0、日曜日を6とする
datetime
モジュールのweekday()
メソッドは、「月曜日=0」「日曜日=6」として、曜日を数値で返します。
import datetime
# 今日の日付を取得
today = datetime.date.today()
# 曜日(0〜6)を取得
weekday_num = today.weekday()
print("曜日(0=月, 6=日):", weekday_num)
実行結果:
曜日(0=月, 6=日): 2
上記の例では、水曜日(2)が返ってきています。曜日の番号と実際の曜日名は以下の通りです:
- 0:月曜日
- 1:火曜日
- 2:水曜日
- 3:木曜日
- 4:金曜日
- 5:土曜日
- 6:日曜日
2-2. isoweekday():月曜日を1、日曜日を7とする
isoweekday()
メソッドはISO形式に基づき、「月曜日=1」「日曜日=7」で返します。
import datetime
today = datetime.date.today()
# ISO形式の曜日(1〜7)を取得
iso_weekday_num = today.isoweekday()
print("ISO形式の曜日(1=月, 7=日):", iso_weekday_num)
実行結果:
ISO形式の曜日(1=月, 7=日): 3
曜日を1始まりで扱いたい場合や、国際的な規格に準拠したいときはこちらが便利です。
3. よくある使い方・応用例
3-1. 平日・週末を判定する
曜日の数値を使えば、簡単に「週末かどうか」を判定できます。
import datetime
today = datetime.date.today()
weekday = today.weekday() # 0=月, 6=日
# 週末かどうかを判定
if weekday >= 5:
print("今日は週末です。")
else:
print("今日は平日です。")
実行結果:
今日は平日です。
3-2. 曜日名を表示する
数値だけでなく、実際の曜日名(例:月曜日)を表示したい場合は、calendar
モジュールと組み合わせると便利です。
import datetime
import calendar
today = datetime.date.today()
weekday = today.weekday() # 0=月, 6=日
# 曜日名を取得
weekday_name = calendar.day_name[weekday]
print("今日は", weekday_name, "です。")
実行結果:
今日は Wednesday です。
日本語表示をしたい場合は、別途曜日名のリストを定義する方法があります。
3-3. 日本語の曜日名を取得する
import datetime
japanese_days = ['月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日', '日曜日']
today = datetime.date.today()
weekday = today.weekday()
print("今日は", japanese_days[weekday], "です。")
実行結果:
今日は 水曜日 です。
4. 注意点・エラー対策
4-1. datetimeとdateの違いに注意
weekday()
やisoweekday()
は、datetime.date
オブジェクト、またはdatetime.datetime
オブジェクトに対して使えます。
しかし、文字列などに対して直接使うとエラーになります。
# エラー例
date_str = "2025-07-23"
print(date_str.weekday()) # AttributeErrorになる
対処法:
文字列はdatetime.strptime()
で日付型に変換してから使いましょう。
from datetime import datetime
date_str = "2025-07-23"
date_obj = datetime.strptime(date_str, "%Y-%m-%d").date()
print(date_obj.weekday()) # 正常に動作
4-2. 曜日の始まりが違うので混乱に注意
weekday()
は「月曜日=0」、isoweekday()
は「月曜日=1」で返すため、処理によってどちらを使うか統一しましょう。
5. まとめ
今回は、Pythonで現在の曜日を取得する方法として、weekday()
とisoweekday()
の違いや活用方法をご紹介しました。
weekday()
は「月曜日=0、日曜日=6」isoweekday()
は「月曜日=1、日曜日=7」- 平日・週末判定、曜日名の取得など実務にも応用可能
日付や曜日の処理は、スケジューラーや勤怠管理など、さまざまなシステムで役立ちます。特にPython初心者の方は、これらの関数を使いこなすことで実務的なスキルが一歩レベルアップします。
学習のコツ:まずはシンプルなコードから試し、応用パターンを徐々に身につけていきましょう。