Pythonで曜日を取得する方法を解説!weekday()とisoweekday()の違いと使い方
生徒
「Pythonで“今日は何曜日?”って調べることってできますか?」
先生
「できますよ!Pythonではweekday()やisoweekday()という関数を使えば、今日の曜日を数字で取得できます。」
生徒
「数字って、月曜なら1とか日曜なら7とかですか?」
先生
「それはisoweekday()のパターンですね。実はweekday()とisoweekday()で少し違いがあるんです。順番に解説していきますね。」
1. Pythonで曜日を取得する方法とは?
Python(パイソン)で現在の曜日を調べたいときは、datetime(デイトタイム)というモジュールを使います。その中でもweekday()とisoweekday()という関数を使えば、日付に対応する曜日を「数字」で取得できます。
たとえば、月曜日なら「0」や「1」、日曜日なら「6」や「7」など、数字で曜日が表されます。Pythonを使ったプログラムで、カレンダーやスケジュール管理を作るときにもよく使われる方法です。
2. weekday()の使い方と特徴
weekday()は、Pythonで日付を取得したときに、その日が何曜日かを「0~6」の数字で教えてくれる関数です。
0が月曜日、6が日曜日というのがポイントです。
from datetime import datetime
today = datetime.today()
print(today.weekday())
2
この例では「2」と表示されているので、「水曜日」を意味しています。曜日の数字の対応は次の通りです:
- 0:月曜日
- 1:火曜日
- 2:水曜日
- 3:木曜日
- 4:金曜日
- 5:土曜日
- 6:日曜日
3. isoweekday()の使い方と違い
isoweekday()も同じように曜日を数字で返してくれますが、1〜7の範囲で表され、1が月曜日、7が日曜日というルールになります。
from datetime import datetime
today = datetime.today()
print(today.isoweekday())
3
この場合、「3」は水曜日を意味します。weekday()と違って、日曜日が「7」になるので注意しましょう。
4. weekday()とisoweekday()の違いを表で比較
2つの関数の違いを、曜日ごとの数字でまとめると以下のようになります:
| 曜日 | weekday() | isoweekday() |
|---|---|---|
| 月曜日 | 0 | 1 |
| 火曜日 | 1 | 2 |
| 水曜日 | 2 | 3 |
| 木曜日 | 3 | 4 |
| 金曜日 | 4 | 5 |
| 土曜日 | 5 | 6 |
| 日曜日 | 6 | 7 |
このように、同じ曜日でも数字がずれるので、使い分けには注意しましょう。
5. 今日の曜日を日本語で表示したいとき
数字だけではわかりにくいので、「月曜日」や「火曜日」など、日本語の文字で表示したいときもありますよね。そんなときは、自分でリスト(配列)を用意して、数字に対応した文字列を表示する方法が使えます。
week_list = ["月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"]
today = datetime.today()
print("今日は", week_list[today.weekday()])
今日は 水曜日
weekday()の戻り値(0〜6)を使って、リストの中から対応する曜日を選びます。
6. 未来や過去の日付の曜日も取得できる
曜日を調べるのは「今日」だけとは限りません。「来週の金曜日は何曜日?」とか「1ヶ月前の曜日は?」など、他の日付に対しても曜日の取得ができます。
from datetime import timedelta
next_week = datetime.today() + timedelta(days=7)
print("来週の曜日(数字):", next_week.weekday())
print("来週の曜日(日本語):", week_list[next_week.weekday()])
来週の曜日(数字): 2
来週の曜日(日本語): 水曜日
timedeltaと組み合わせることで、好きな日付の曜日を調べることができます。
7. 初心者のための補足:曜日を数字で扱う理由とは?
なぜ曜日を「月曜日」や「火曜日」ではなく、数字で扱うのか疑問に思うかもしれません。
それは、プログラムの中では「文字」より「数字」のほうが比較や計算がしやすいからです。たとえば「月曜日から金曜日までの範囲かどうか」を調べるとき、数字であれば次のように簡単に書けます:
if today.weekday() < 5:
print("平日です")
else:
print("週末です")
平日です
このように、weekday()で得た数字を使うことで、曜日による条件分岐が簡単にできるのです。
8. 曜日を使ったアプリ例:予定表やリマインダー
曜日の情報は、日々の予定管理アプリや、タスクリマインダーを作るときにとても役立ちます。たとえば:
- 「金曜日に週報を自動で送信」
- 「月曜日にToDoをリセット」
- 「土日は通知をオフ」
このような処理を作るには、weekday()やisoweekday()の知識が欠かせません。