【Python】特定年月の「月末日(月の日数)」を取得する方法

Pythonで「ある月が何日まであるか(28日, 30日, 31日)」や「うるう年かどうか」を判定するには、標準ライブラリ calendar モジュールの monthrange() 関数を使用するのが最も確実です。

これを使えば、自分で「西向く士(にしむくさむらい)」やうるう年の計算ロジックを実装する必要はありません。

目次

実装例:2月の最終日を確認する

ここでは、2025年2月を対象に、その月の1日が何曜日で始まり、月全体で何日間あるか(最終日は何日か)を取得するコードを実装します。

ソースコード

import calendar

# 調査対象の年月
target_year = 2025
target_month = 2

# calendar.monthrange(年, 月) を実行
# 戻り値は (1日の曜日インデックス, その月の日数) のタプルです
# 曜日インデックス: 0=月曜日, ... 6=日曜日
weekday_index, last_day = calendar.monthrange(target_year, target_month)

print(f"対象: {target_year}年 {target_month}月")
print("-" * 30)

# 結果の出力
print(f"1日の曜日 : {weekday_index} (0:月曜 - 6:日曜)")
print(f"月の日数  : {last_day} 日")
print(f"月末日    : {target_year}/{target_month}/{last_day}")

実行結果

対象: 2025年 2月
------------------------------
1日の曜日 : 5 (0:月曜 - 6:日曜)
月の日数  : 28 日
月末日    : 2025/2/28

解説

calendar.monthrange(year, month)

この関数は、指定された年・月のカレンダー情報を計算し、以下の2つの値をタプルで返します。

  1. 第1戻り値(曜日): その月の1日が何曜日かを示す整数(0が月曜日、6が日曜日)。
  2. 第2戻り値(日数): その月が何日間あるか(=月末の日付)。

うるう年の自動判定

monthrange は指定された year がうるう年であるかも自動的に判定します。 例えば、上記コードの target_year2024(うるう年)に変更すると、日数は自動的に 29 と返されます。月末の処理や支払い期限の計算などで非常に重宝する関数です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次