Python PR

【Python】曜日を取得する方法を解説します

記事内に商品プロモーションを含む場合があります

この記事では、Pythonで曜日を取得する方法を解説します。

日付を取得したい場合は以下の記事を参考にしてください。

日付の取得と計算する方法を解説

曜日を整数で取得する

曜日を取得するにはdatetimeモジュールのdateクラスのweekdayメソッドを使います。weekdayメソッドは、曜日を「0(月曜)〜6(日曜)」の整数で返します。

import datetime

today = datetime.date.today()

print(f'日付: {today}, 曜日{today.weekday()}')

実行結果

日付: 2022-05-18, 曜日2

指定した日時の曜日を取得することも可能です。

import datetime

day = datetime.date(2022, 1, 1)
print(f'日付: {today}, 曜日{today.weekday()}')

実行結果

日付: 2022-05-18, 曜日2

曜日を文字列で取得する

曜日を整数で受け取っても使いづらいので文字列で取得する方法も見ていきましょう!

整数から変換する

先ほど紹介したweekdayメソッドで取得した曜日(整数)を文字列で取得したい場合は列挙型のIntEnumを使うと簡単です。

import datetime
from enum import IntEnum, auto

# 曜日の列挙型
class Week(IntEnum):
    Monday = 0
    Tuesday = auto()
    Wednesday = auto()
    Thursday = auto()
    Friday = auto()
    Saturday = auto()
    Sunday = auto()


# 今日の取得
today = datetime.date.today()

# 日付の曜日(整数)の出力
print(f'日付: {today}, 曜日{today.weekday()}')

# 曜日の判定と出力
if Week.Monday == today.weekday():
    print(Week.Monday.name)
elif Week.Tuesday == today.weekday():
    print(Week.Tuesday.name)
elif Week.Wednesday == today.weekday():
    print(Week.Wednesday.name)
elif Week.Thursday == today.weekday():
    print(Week.Thursday.name)
elif Week.Friday == today.weekday():
    print(Week.Friday.name)
elif Week.Saturday == today.weekday():
    print(Week.Saturday.name)
elif Week.Sunday == today.weekday():
    print(Week.Sunday.name)

実行結果

日付: 2022-05-18, 曜日2
Wednesday

列挙型を使う方法を解説【Enum・IntEnum】

strftimeメソッドを使う

dateオブジェクトやdatetimeオブジェクトがサポートしているstrftime()を使うことで曜日を取得することができます。引数に書式コードの%a、または%Aを使うことでロケールの曜日名を文字列で取得することができます。

import datetime

today = datetime.date.today()
print(today.strftime('%a'))

print(today.strftime('%A'))

実行結果

Wed
Wednesday

localeモジュールのlocale.setlocale()locale.LC_TIME(時刻を書式化するためのロケールカテゴリ)を設定することで日本語やその他の表記で曜日を取得することができます。

import datetime
import locale

# ロケールを日本語に変更
locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')

today = datetime.date.today()
print(today.strftime('%a'))
print(today.strftime('%A'))

# ロケールをフランス語に変更
locale.setlocale(locale.LC_TIME, 'fr_FR.UTF-8')

today = datetime.date.today()
print(today.strftime('%a'))
print(today.strftime('%A'))

実行結果

水
水曜日
Mer
Mercredi