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

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

datetimeオブジェクトのweekday()メソッドを利用すると、曜日を0から6の数字で取得できます。ここで、0は月曜日、6は日曜日を表します。

例えば、datetime.date(2023, 10, 25).weekday()は水曜日を示す2を返します。

この方法を使うことで、日付操作を簡単に行うことができます。

この記事でわかること
  • datetimeモジュールのweekday()とisoweekday()メソッドの使い方
  • calendarモジュールを使った曜日の取得方法
  • 日付リストから曜日を一括で取得する方法
  • 曜日を日本語で表示する方法
  • 特定の曜日の日付をフィルタリングする方法

目次から探す

datetimeモジュールを使った曜日の取得

Pythonの標準ライブラリであるdatetimeモジュールを使用すると、日付から曜日を簡単に取得することができます。

このセクションでは、datetimeモジュールのweekday()メソッドisoweekday()メソッドを使って曜日を取得する方法を解説します。

weekday()メソッドの使い方

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

0が月曜日、6が日曜日を表します。

以下にサンプルコードを示します。

import datetime
# 現在の日付を取得
today = datetime.date.today()
# 曜日を取得
weekday_number = today.weekday()
print(f"今日の曜日(0=月曜日)は: {weekday_number}")
今日の曜日(0=月曜日)は: 2

このコードは、現在の日付の曜日を数字で取得し、0が月曜日、1が火曜日、2が水曜日といった形で表示します。

isoweekday()メソッドの使い方

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

1が月曜日、7が日曜日を表します。

以下にサンプルコードを示します。

import datetime
# 現在の日付を取得
today = datetime.date.today()
# ISO形式の曜日を取得
isoweekday_number = today.isoweekday()
print(f"今日の曜日(1=月曜日)は: {isoweekday_number}")
今日の曜日(1=月曜日)は: 3

このコードは、ISO形式で現在の日付の曜日を数字で取得し、1が月曜日、2が火曜日、3が水曜日といった形で表示します。

weekday()とisoweekday()の違い

weekday()isoweekday()の主な違いは、曜日を表す数字の範囲と開始日です。

以下の表にまとめます。

スクロールできます
メソッド名曜日範囲開始日
weekday()0-6月曜日
isoweekday()1-7月曜日
  • weekday()は0から始まり、0が月曜日、6が日曜日です。
  • isoweekday()は1から始まり、1が月曜日、7が日曜日です。

この違いを理解することで、用途に応じて適切なメソッドを選択することができます。

calendarモジュールを使った曜日の取得

Pythonのcalendarモジュールは、カレンダー関連の操作を行うための便利な機能を提供しています。

このセクションでは、calendarモジュールを使って日付から曜日を取得する方法を解説します。

calendarモジュールとは

calendarモジュールは、カレンダーに関連するさまざまな関数を提供するPythonの標準ライブラリです。

月や年のカレンダーをテキスト形式で表示したり、特定の日付の曜日を取得したりすることができます。

calendarモジュールを使用することで、カレンダー操作を簡単に行うことができます。

weekday()関数の使い方

calendarモジュールのweekday()関数は、指定した日付の曜日を0から6の数字で返します。

0が月曜日、6が日曜日を表します。

以下にサンプルコードを示します。

import calendar
# 特定の日付の曜日を取得
year = 2023
month = 10
day = 25
weekday_number = calendar.weekday(year, month, day)
print(f"{year}年{month}月{day}日の曜日(0=月曜日)は: {weekday_number}")
2023年10月25日の曜日(0=月曜日)は: 2

このコードは、指定した日付の曜日を数字で取得し、0が月曜日、1が火曜日、2が水曜日といった形で表示します。

calendarモジュールの利点と制限

calendarモジュールには以下の利点と制限があります。

利点:

  • カレンダー関連の操作を簡単に行える。
  • 月や年のカレンダーをテキスト形式で表示できる。
  • 特定の日付の曜日を簡単に取得できる。

制限:

  • calendarモジュールは、日付の計算や操作には向いていない。
  • 日付のフォーマットやタイムゾーンの操作はサポートしていない。

calendarモジュールは、カレンダー表示や曜日の取得に特化しており、日付の計算やフォーマットにはdatetimeモジュールを併用することが一般的です。

用途に応じて、適切なモジュールを選択することが重要です。

応用例

Pythonを使って日付から曜日を取得する基本的な方法を学んだところで、ここではその応用例をいくつか紹介します。

これらの例を通じて、実際のプログラムでどのように活用できるかを理解しましょう。

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

複数の日付がリストとして与えられた場合、それぞれの日付の曜日を一括で取得する方法を紹介します。

以下のサンプルコードでは、datetimeモジュールを使用して日付リストから曜日を取得します。

import datetime
# 日付のリストを定義
date_list = [
    datetime.date(2023, 10, 25),
    datetime.date(2023, 10, 26),
    datetime.date(2023, 10, 27)
]
# 各日付の曜日を取得
weekdays = [date.weekday() for date in date_list]
print("各日付の曜日(0=月曜日):", weekdays)
各日付の曜日(0=月曜日): [2, 3, 4]

このコードは、日付リストから各日付の曜日を取得し、リストとして出力します。

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

曜日を数字ではなく、日本語で表示したい場合があります。

以下のサンプルコードでは、曜日を日本語で表示する方法を示します。

import datetime
# 日本語の曜日リスト
japanese_weekdays = ["月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"]
# 現在の日付を取得
today = datetime.date.today()
# 曜日を日本語で表示
weekday_japanese = japanese_weekdays[today.weekday()]
print(f"今日の曜日は: {weekday_japanese}")
今日の曜日は: 水曜日

このコードは、weekday()メソッドで取得した数字を日本語の曜日に変換して表示します。

特定の曜日の日付をフィルタリングする方法

特定の曜日に該当する日付だけを抽出したい場合があります。

以下のサンプルコードでは、日付リストから金曜日に該当する日付をフィルタリングする方法を示します。

import datetime
# 日付のリストを定義
date_list = [
    datetime.date(2023, 10, 25),
    datetime.date(2023, 10, 26),
    datetime.date(2023, 10, 27)
]
# 金曜日に該当する日付をフィルタリング
fridays = [date for date in date_list if date.weekday() == 4]
print("金曜日の日付:", fridays)
金曜日の日付: [datetime.date(2023, 10, 27)]

このコードは、日付リストから金曜日に該当する日付を抽出し、リストとして出力します。

よくある質問

weekday()とisoweekday()の違いは何ですか?

weekday()isoweekday()はどちらも曜日を数字で返すメソッドですが、返される数字の範囲と開始日が異なります。

weekday()は0から6の範囲で、0が月曜日、6が日曜日を表します。

一方、isoweekday()は1から7の範囲で、1が月曜日、7が日曜日を表します。

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

datetimeモジュールとcalendarモジュールのどちらを使うべきですか?

datetimeモジュールとcalendarモジュールはそれぞれ異なる目的に適しています。

datetimeモジュールは日付や時間の計算、操作に強く、タイムゾーンの管理も可能です。

一方、calendarモジュールはカレンダー表示や曜日の取得に特化しています。

日付の計算やフォーマットが必要な場合はdatetimeモジュールを、カレンダー表示や曜日の取得が主な目的の場合はcalendarモジュールを使用するのが良いでしょう。

曜日を数字ではなく文字列で取得する方法はありますか?

曜日を文字列で取得するには、曜日のリストを用意し、weekday()isoweekday()で取得した数字をインデックスとして使用する方法があります。

例:japanese_weekdays = ["月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"]を用意し、japanese_weekdays[today.weekday()]で日本語の曜日を取得できます。

まとめ

Pythonを使って日付から曜日を取得する方法には、datetimeモジュールとcalendarモジュールを利用する方法があります。

datetimeモジュールのweekday()isoweekday()メソッドcalendarモジュールのweekday()関数を使い分けることで、さまざまな曜日取得のニーズに対応できます。

この記事を通じて、曜日の取得方法を理解し、実際のプログラムで活用してみてください。

  • URLをコピーしました!
目次から探す