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

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

具体的には、datetimeオブジェクトやdateオブジェクトを使った方法、曜日を文字列で取得する方法、そして実際のコード例を紹介します。

さらに、データ分析ライブラリのpandasを使った応用的な方法や、カスタム関数を使った曜日の取得方法もカバーします。

目次から探す

曜日を取得する方法

Pythonでは、日付から曜日を取得するためにいくつかの方法があります。

ここでは、datetimeモジュールを使った方法と、dateオブジェクトを使った方法について詳しく解説します。

datetimeオブジェクトから曜日を取得する

datetimeモジュールは、日付と時間を扱うための標準ライブラリです。

このモジュールを使うことで、簡単に曜日を取得することができます。

weekday()メソッドの使い方

weekday()メソッドは、曜日を0から6の整数で返します。

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

以下に例を示します。

import datetime
# 現在の日付と時刻を取得
now = datetime.datetime.now()
# 曜日を取得
weekday = now.weekday()
print(f"今日の曜日(0=月曜日, 6=日曜日): {weekday}")

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

isoweekday()メソッドの使い方

isoweekday()メソッドは、曜日を1から7の整数で返します。

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

以下に例を示します。

import datetime
# 現在の日付と時刻を取得
now = datetime.datetime.now()
# 曜日を取得
isoweekday = now.isoweekday()
print(f"今日の曜日(1=月曜日, 7=日曜日): {isoweekday}")

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

dateオブジェクトから曜日を取得する

dateオブジェクトは、日付のみを扱うためのオブジェクトです。

datetimeモジュールの一部として提供されています。

dateオブジェクトの作成方法

まず、dateオブジェクトを作成する方法を見てみましょう。

以下の例では、特定の日付のdateオブジェクトを作成します。

import datetime
# 特定の日付のdateオブジェクトを作成
specific_date = datetime.date(2023, 10, 1)
print(f"特定の日付: {specific_date}")

このコードを実行すると、指定した日付が表示されます。

weekday()メソッドの使い方

dateオブジェクトでも、weekday()メソッドを使って曜日を取得することができます。

以下に例を示します。

import datetime
# 特定の日付のdateオブジェクトを作成
specific_date = datetime.date(2023, 10, 1)
# 曜日を取得
weekday = specific_date.weekday()
print(f"特定の日付の曜日(0=月曜日, 6=日曜日): {weekday}")

このコードを実行すると、指定した日付の曜日が0から6の整数で表示されます。

isoweekday()メソッドの使い方

dateオブジェクトでも、isoweekday()メソッドを使って曜日を取得することができます。

以下に例を示します。

import datetime
# 特定の日付のdateオブジェクトを作成
specific_date = datetime.date(2023, 10, 1)
# 曜日を取得
isoweekday = specific_date.isoweekday()
print(f"特定の日付の曜日(1=月曜日, 7=日曜日): {isoweekday}")

このコードを実行すると、指定した日付の曜日が1から7の整数で表示されます。

以上が、datetimeオブジェクトとdateオブジェクトを使って曜日を取得する方法です。

これらのメソッドを使うことで、簡単に日付から曜日を取得することができます。

曜日を文字列で取得する方法

Pythonでは、日付から曜日を文字列として取得する方法もあります。

特に、曜日を「月曜日」や Tuesday といった形式で表示したい場合に便利です。

このセクションでは、strftime()メソッドを使った方法と、曜日を日本語で表示する方法について解説します。

strftime()メソッドの使い方

strftime()メソッドは、日付や時間を指定した形式の文字列に変換するためのメソッドです。

曜日を文字列で取得するには、%A%aといったフォーマットコードを使用します。

フォーマット指定子説明
%A曜日をフルスペルで表示 (例: Monday, Tuesday)
%a曜日を省略形で表示 (例: Mon, Tue)

以下に、strftime()メソッドを使って曜日を文字列で取得する例を示します。

from datetime import datetime
# 現在の日付と時刻を取得
now = datetime.now()
# 曜日をフルスペルで表示
full_weekday = now.strftime("%A")
print("Full Weekday:", full_weekday)  # 例: Full Weekday: Monday
# 曜日を省略形で表示
short_weekday = now.strftime("%a")
print("Short Weekday:", short_weekday)  # 例: Short Weekday: Mon

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

Pythonの標準ライブラリでは、曜日を日本語で直接表示する機能はありません。

しかし、辞書を使って英語の曜日を日本語に変換することができます。

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

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

以下のように、英語の曜日をキー、日本語の曜日を値とする辞書を定義します。

# 英語の曜日を日本語に変換する辞書
weekday_dict = {
    "Monday": "月曜日",
    "Tuesday": "火曜日",
    "Wednesday": "水曜日",
    "Thursday": "木曜日",
    "Friday": "金曜日",
    "Saturday": "土曜日",
    "Sunday": "日曜日"
}

辞書を使った曜日の表示方法

次に、strftime()メソッドで取得した英語の曜日を、先ほど作成した辞書を使って日本語に変換します。

from datetime import datetime
# 現在の日付と時刻を取得
now = datetime.now()
# 曜日をフルスペルで取得
english_weekday = now.strftime("%A")
# 英語の曜日を日本語に変換
japanese_weekday = weekday_dict[english_weekday]
print("Japanese Weekday:", japanese_weekday)  # 例: Japanese Weekday: 月曜日

このようにして、Pythonを使って日付から曜日を文字列で取得し、それを日本語で表示することができます。

これにより、ユーザーにとってより親しみやすい形式で曜日を表示することが可能になります。

実践例

ここでは、実際にPythonを使って日付から曜日を取得する具体的な例を紹介します。

基本的な使い方を理解した上で、実際のコードを見ていきましょう。

現在の日付から曜日を取得する

まずは、現在の日付から曜日を取得する方法を見てみましょう。

Pythonのdatetimeモジュールを使うと、簡単に現在の日付を取得できます。

import datetime
# 現在の日付を取得
today = datetime.datetime.today()
# 曜日を取得 (0:月曜日, 6:日曜日)
weekday = today.weekday()
# 曜日を表示
print("今日は", weekday, "曜日です。")

このコードを実行すると、現在の日付の曜日が数値で表示されます。

例えば、月曜日なら0、日曜日なら6が表示されます。

任意の日付から曜日を取得する

次に、任意の日付から曜日を取得する方法を見てみましょう。

datetimeモジュールを使って特定の日付を作成し、その日付の曜日を取得します。

import datetime
# 任意の日付を作成 (例: 2023年10月1日)
specific_date = datetime.datetime(2023, 10, 1)
# 曜日を取得 (0:月曜日, 6:日曜日)
weekday = specific_date.weekday()
# 曜日を表示
print("2023年10月1日は", weekday, "曜日です。")

このコードを実行すると、指定した日付の曜日が数値で表示されます。

例えば、2023年10月1日が日曜日なら6が表示されます。

ユーザー入力の日付から曜日を取得する

最後に、ユーザーが入力した日付から曜日を取得する方法を見てみましょう。

input関数を使ってユーザーから日付を入力してもらい、その日付の曜日を取得します。

import datetime
# ユーザーから日付を入力してもらう
date_input = input("日付を入力してください (例: 2023-10-01): ")
# 入力された日付をdatetimeオブジェクトに変換
input_date = datetime.datetime.strptime(date_input, "%Y-%m-%d")
# 曜日を取得 (0:月曜日, 6:日曜日)
weekday = input_date.weekday()
# 曜日を表示
print(date_input, "は", weekday, "曜日です。")

このコードを実行すると、ユーザーが入力した日付の曜日が数値で表示されます。

例えば、ユーザーが 2023-10-01 と入力すると、その日付の曜日が表示されます。

以上が、Pythonを使って日付から曜日を取得する実践例です。

これらの方法を使えば、さまざまなシチュエーションで日付から曜日を簡単に取得することができます。

応用編

pandasを使った曜日の取得

Pythonのデータ分析ライブラリであるpandasを使うと、日付データの操作が非常に簡単になります。

ここでは、pandasを使って曜日を取得する方法を解説します。

pandasのインストール方法

まず、pandasがインストールされていない場合は、以下のコマンドを使ってインストールします。

pip install pandas

pandasで日付データを扱う方法

pandasでは、pd.to_datetime()関数を使って日付データを扱うことができます。

以下はその基本的な使い方です。

import pandas as pd
# 日付データを文字列から変換
date_series = pd.to_datetime(['2023-10-01', '2023-10-02', '2023-10-03'])
print(date_series)

このコードを実行すると、以下のような出力が得られます。

DatetimeIndex(['2023-10-01', '2023-10-02', '2023-10-03'], dtype='datetime64[ns]', freq=None)

pandasで曜日を取得する方法

pandasでは、dtアクセサを使って曜日を取得することができます。

以下にその例を示します。

import pandas as pd
# 日付データを文字列から変換
date_series = pd.to_datetime(['2023-10-01', '2023-10-02', '2023-10-03'])
# 曜日を取得
weekdays = date_series.dt.day_name()
print(weekdays)

このコードを実行すると、以下のような出力が得られます。

Index(['Sunday', 'Monday', 'Tuesday'], dtype='object')

カスタム関数を使った曜日の取得

特定のフォーマットや条件に基づいて曜日を取得したい場合、カスタム関数を作成することが有効です。

カスタム関数の作成方法

以下に、日付を入力として受け取り、曜日を日本語で返すカスタム関数の例を示します。

import datetime
def get_weekday_japanese(date):
    # 曜日を日本語に変換する辞書
    weekdays_japanese = {
        0: '月曜日',
        1: '火曜日',
        2: '水曜日',
        3: '木曜日',
        4: '金曜日',
        5: '土曜日',
        6: '日曜日'
    }
    # 曜日を取得
    weekday = date.weekday()
    return weekdays_japanese[weekday]

カスタム関数の利用例

上記のカスタム関数を使って、特定の日付の曜日を取得する方法を示します。

import datetime
# カスタム関数の定義(前述のコードを使用)
def get_weekday_japanese(date):
    weekdays_japanese = {
        0: '月曜日',
        1: '火曜日',
        2: '水曜日',
        3: '木曜日',
        4: '金曜日',
        5: '土曜日',
        6: '日曜日'
    }
    weekday = date.weekday()
    return weekdays_japanese[weekday]
# 任意の日付を指定
date = datetime.date(2023, 10, 1)
weekday_japanese = get_weekday_japanese(date)
print(f"{date}は{weekday_japanese}です。")

このコードを実行すると、以下のような出力が得られます。

2023-10-01は日曜日です。

このように、カスタム関数を使うことで、特定のフォーマットや条件に基づいて曜日を取得することができます。

目次から探す