【Python】日付から曜日を数字で取得する方法

この記事では、Pythonのdatetimeモジュールを使って、日付から曜日を数字で取得する方法をわかりやすく解説します。

具体的には、weekday()メソッドisoweekday()メソッドの使い方や、それぞれの違いについて説明します。

また、曜日を日本語で表示する方法や、複数の日付から一括で曜日を取得する方法も紹介します。

初心者の方でも理解しやすいように、サンプルコードと実行結果を交えて説明しますので、ぜひ参考にしてください。

目次から探す

曜日を数字で取得する方法

Pythonでは、日付から曜日を数字で取得するために、datetimeモジュールを使用します。

このモジュールには、曜日を数字で取得するための便利なメソッドがいくつか用意されています。

ここでは、weekday()メソッドisoweekday()メソッドの使い方について詳しく解説します。

weekday()メソッドの使い方

weekday()メソッドの概要

weekday()メソッドは、datetimeオブジェクトから曜日を取得するためのメソッドです。

このメソッドは、曜日を0から6の数字で返します。

0が月曜日、1が火曜日、2が水曜日、3が木曜日、4が金曜日、5が土曜日、6が日曜日を表します。

実際の使用例

以下に、weekday()メソッドを使用して曜日を取得する例を示します。

import datetime
# 現在の日付を取得
today = datetime.datetime.today()
# 曜日を取得
weekday_number = today.weekday()
# 結果を表示
print(f"今日の曜日(0=月曜日, 6=日曜日)は: {weekday_number}")

このコードを実行すると、今日の日付に対応する曜日が0から6の数字で表示されます。

例えば、今日が水曜日であれば、結果は2となります。

isoweekday()メソッドの使い方

isoweekday()メソッドの概要

isoweekday()メソッドも、datetimeオブジェクトから曜日を取得するためのメソッドです。

しかし、このメソッドは曜日を1から7の数字で返します。

1が月曜日、2が火曜日、3が水曜日、4が木曜日、5が金曜日、6が土曜日、7が日曜日を表します。

実際の使用例

以下に、isoweekday()メソッドを使用して曜日を取得する例を示します。

import datetime
# 現在の日付を取得
today = datetime.datetime.today()
# 曜日を取得
isoweekday_number = today.isoweekday()
# 結果を表示
print(f"今日の曜日(1=月曜日, 7=日曜日)は: {isoweekday_number}")

このコードを実行すると、今日の日付に対応する曜日が1から7の数字で表示されます。

例えば、今日が水曜日であれば、結果は3となります。

以上のように、weekday()メソッドisoweekday()メソッドを使うことで、Pythonで簡単に日付から曜日を数字で取得することができます。

用途に応じて、どちらのメソッドを使用するか選択してください。

曜日を数字で取得する際の注意点

Pythonで日付から曜日を数字で取得する際には、いくつかの注意点があります。

特に、weekday()メソッドisoweekday()メソッドの違いについて理解しておくことが重要です。

weekday()とisoweekday()の違い

weekday()メソッドisoweekday()メソッドは、どちらも曜日を数字で取得するためのメソッドですが、返される数字が異なります。

  • weekday()メソッドは、0から6の数字を返します。

0が月曜日、6が日曜日です。

  • isoweekday()メソッドは、1から7の数字を返します。

1が月曜日、7が日曜日です。

以下に、両方のメソッドを使った例を示します。

import datetime
# 現在の日付を取得
today = datetime.date.today()
# weekday()メソッドを使用
weekday_number = today.weekday()
print(f"weekday()メソッドの結果: {weekday_number}")
# isoweekday()メソッドを使用
isoweekday_number = today.isoweekday()
print(f"isoweekday()メソッドの結果: {isoweekday_number}")

このコードを実行すると、例えば今日が水曜日の場合、以下のような結果が得られます。

weekday()メソッドの結果: 2
isoweekday()メソッドの結果: 3

0から始まるか1から始まるかの違い

上記の例からもわかるように、weekday()メソッドは0から始まり、isoweekday()メソッドは1から始まります。

この違いを理解しておくことは、曜日を扱う際に非常に重要です。

例えば、曜日をリストや辞書で管理する場合、どちらのメソッドを使うかによってインデックスが異なるため、注意が必要です。

import datetime
# 現在の日付を取得
today = datetime.date.today()
# 曜日をリストで管理する例
weekdays = ["月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"]
# weekday()メソッドを使用
print(f"今日は{weekdays[today.weekday()]}です。")
# isoweekday()メソッドを使用
print(f"今日は{weekdays[today.isoweekday() - 1]}です。")

このコードを実行すると、例えば今日が水曜日の場合、以下のような結果が得られます。

今日は水曜日です。
今日は水曜日です。

このように、weekday()メソッドisoweekday()メソッドの違いを理解し、適切に使い分けることが重要です。

応用例

日付リストから曜日を一括取得する方法

Pythonでは、複数の日付から一括で曜日を取得することができます。

例えば、リストに格納された日付からそれぞれの曜日を取得する場合、以下のようにコードを記述します。

from datetime import datetime
# 日付のリストを作成
dates = ["2023-10-01", "2023-10-02", "2023-10-03"]
# 曜日を取得してリストに格納
weekdays = [datetime.strptime(date, "%Y-%m-%d").weekday() for date in dates]
print(weekdays)  # 出力: [6, 0, 1]

このコードでは、datetime.strptimeを使って文字列の日付をdatetimeオブジェクトに変換し、weekday()メソッドを使って曜日を取得しています。

リスト内包表記を使うことで、簡潔に複数の日付から曜日を取得することができます。

曜日を日本語で表示する方法

曜日を数字で取得するだけでなく、日本語で表示したい場合もあります。

そのためには、曜日を日本語に変換する辞書を作成し、取得した曜日の数字を対応する日本語に変換します。

曜日を日本語に変換する辞書の作成

まず、曜日を日本語に変換するための辞書を作成します。

以下のように、数字と対応する日本語の曜日を辞書に格納します。

# 曜日を日本語に変換する辞書
weekday_dict = {
    0: "月曜日",
    1: "火曜日",
    2: "水曜日",
    3: "木曜日",
    4: "金曜日",
    5: "土曜日",
    6: "日曜日"
}

実際の使用例

次に、この辞書を使って曜日を日本語で表示する方法を見てみましょう。

先ほどの例を拡張して、取得した曜日を日本語で表示します。

from datetime import datetime
# 日付のリストを作成
dates = ["2023-10-01", "2023-10-02", "2023-10-03"]
# 曜日を日本語に変換する辞書
weekday_dict = {
    0: "月曜日",
    1: "火曜日",
    2: "水曜日",
    3: "木曜日",
    4: "金曜日",
    5: "土曜日",
    6: "日曜日"
}
# 曜日を取得して日本語に変換してリストに格納
weekdays_japanese = [weekday_dict[datetime.strptime(date, "%Y-%m-%d").weekday()] for date in dates]
print(weekdays_japanese)  # 出力: ['日曜日', '月曜日', '火曜日']

このコードでは、weekday_dictを使って、取得した曜日の数字を対応する日本語に変換しています。

リスト内包表記を使うことで、複数の日付から一括で日本語の曜日を取得することができます。

以上の方法を使えば、Pythonで日付から曜日を数字で取得するだけでなく、日本語で表示することも簡単にできます。

これらのテクニックを活用して、より便利なプログラムを作成してみてください。

目次から探す