Python|今週の月曜日〜日曜日の日付一覧を取得する

1. はじめに

Pythonで「今週の月曜日〜日曜日の日付一覧を取得する」方法について、実践的なコード例とともに丁寧に解説します。

日付処理は、勤怠管理、スケジュール管理、ログ解析、週次レポート作成など、さまざまな場面で必要になる基本スキルです。とくに「今週の各曜日の日付」を自動で取得できると、手動で日付を入力する手間が省け、ミスも防げます。

本記事では、datetimeモジュールを使って、現在の日付から今週の月曜日を算出し、そこから日曜日までの7日間の日付リストを生成する方法を解説します。

 

2. Pythonで今週の月曜日〜日曜日を取得する基本

2-1. Pythonで日付を扱うためのモジュール:datetime

Pythonのdatetimeモジュールは、日付や時間の計算・操作に非常に便利です。今回は以下の機能を中心に使います:

  • datetime.date.today():現在の日付を取得
  • weekday():曜日を取得(0=月曜日, 6=日曜日)
  • timedelta:日付の加減算に使用

2-2. 今週の曜日リストを取得するコード例

以下のコードでは、今日が何曜日かを基準にして「今週の月曜日の日付」を計算し、そこから日曜日までの7日間の日付リストを作成しています。

from datetime import date, timedelta

def get_week_dates():
    today = date.today()
    monday = today - timedelta(days=today.weekday())  # 月曜日の日付を取得
    week_dates = [monday + timedelta(days=i) for i in range(7)]
    return week_dates

# 結果を表示
for d in get_week_dates():
    print(d)

実行結果:

2025-07-21
2025-07-22
2025-07-23
2025-07-24
2025-07-25
2025-07-26
2025-07-27

このように、今週の月曜日から日曜日までの日付をリスト形式で取得できます。

 

3. よくある使い方・応用例

3-1. 各日付に曜日名をつけて表示する

日付だけでなく、「月曜日」「火曜日」などの曜日名を付けて出力したい場合は、strftime('%A')calendar.day_nameを使うと便利です。

from datetime import date, timedelta
import calendar

def get_week_dates_with_names():
    today = date.today()
    monday = today - timedelta(days=today.weekday())
    week_dates = [monday + timedelta(days=i) for i in range(7)]
    for d in week_dates:
        print(f"{d} ({calendar.day_name[d.weekday()]})")

get_week_dates_with_names()

実行結果:

2025-07-21 (Monday)
2025-07-22 (Tuesday)
2025-07-23 (Wednesday)
2025-07-24 (Thursday)
2025-07-25 (Friday)
2025-07-26 (Saturday)
2025-07-27 (Sunday)

3-2. 翌週や先週の曜日リストも取得する

週をずらして、先週や来週の曜日リストを取得したい場合は、timedelta(weeks=1)を活用しましょう。

def get_week_dates_offset(week_offset=0):
    today = date.today()
    monday = today - timedelta(days=today.weekday()) + timedelta(weeks=week_offset)
    return [monday + timedelta(days=i) for i in range(7)]

# 来週のリストを出力
for d in get_week_dates_offset(1):
    print(d)

実行結果:

2025-07-28
2025-07-29
2025-07-30
2025-07-31
2025-08-01
2025-08-02
2025-08-03

このように、引数を使って動的に週をコントロールできます。

 

4. 注意点・エラー対策

4-1. datetimeとdateの混同に注意

datetime.date.today()datetime.datetime.now()は別物です。後者は時間も含むため、計算時に混乱しやすいので注意してください。

4-2. 曜日番号(weekday)の仕様に注意

weekday()の戻り値は0が月曜日、6が日曜日です。一方、isoweekday()は1が月曜日、7が日曜日と異なる仕様なので、用途に応じて使い分けましょう。

4-3. 年末年始・月跨ぎでも正確に動く?

今回の方法は、週単位での日付計算のため、年末年始や月をまたいだ週でも正確に処理できます。ただし、フォーマット変換(例:YYYY/MM/DD形式など)を行う場合はstrftime()を利用してください。

 

5. まとめ

  • Pythonのdatetimeモジュールで、今週の月曜日〜日曜日を簡単に取得できる
  • リスト内包表記とtimedeltaを活用すると、柔軟な日付処理が可能
  • 曜日名の追加や週単位のオフセットなど、実務にも応用しやすい

このテクニックは、勤怠アプリや週次レポートの自動生成など、実務でも役立ちます。特に毎週決まった期間で処理を行う業務では、自動化の一歩として非常に有用です。

Python初心者の方は、まずは今回のコードをコピペで動かしてみて、自分の環境で確認してみましょう。慣れてきたら曜日の条件を変えてみる、表示形式を整えるなど、カスタマイズして理解を深めてください。

タイトルとURLをコピーしました