カテゴリ: Python 更新日: 2026/01/12

Pythonで月の日数を取得する方法!初心者でもわかるcalendar.monthrangeの使い方

Pythonで特定の年・月の日数を取得する方法(calendar.monthrange())
Pythonで特定の年・月の日数を取得する方法(calendar.monthrange())

先生と生徒の会話形式で理解しよう

生徒

「Pythonで、ある月に何日あるのかを調べたいんですが、どうすればいいんですか?」

先生

「Pythonではcalendarモジュールのmonthrange()関数を使えば、簡単に特定の月の日数がわかりますよ。」

生徒

「2月はうるう年とかあるし、手で計算すると間違えそうです……」

先生

「そのとおり!だからこそcalendar.monthrange()を使うと安全で便利なんです。一緒に学んでみましょう!」

-

1. calendar.monthrange()とは?

1. calendar.monthrange()とは?
1. calendar.monthrange()とは?

Python(パイソン)で月の日数を調べるには、calendar(カレンダー)モジュールに用意されているmonthrange()という関数を使います。

この関数は、指定した年と月を入力すると、「その月の1日が何曜日か」「その月が何日あるか」の2つを返してくれます。

2. calendarモジュールをインポートしよう

2. calendarモジュールをインポートしよう
2. calendarモジュールをインポートしよう

まずはcalendarモジュールを使う準備をします。Pythonに最初から入っている標準モジュールなので、特別なインストールは不要です。


import calendar

この1行で、カレンダー機能を使う準備が整いました。

3. 実際に月の日数を取得してみよう

3. 実際に月の日数を取得してみよう
3. 実際に月の日数を取得してみよう

では、実際に2025年2月が何日あるかを調べてみましょう。うるう年ではないので、28日になるはずです。


import calendar

year = 2025
month = 2

weekday, days = calendar.monthrange(year, month)
print(f"{year}年{month}月は{days}日あります。")

実行結果は以下のようになります。


2025年2月は28日あります。

ここで、weekdayには「その月の1日が何曜日か」が0〜6の数字で入っています。(0が月曜日、6が日曜日)

4. うるう年でも正しく日数が出るの?

4. うるう年でも正しく日数が出るの?
4. うるう年でも正しく日数が出るの?

はい、monthrange()はうるう年(例:2024年や2028年など)も正しく判定してくれます。たとえば、2024年2月の場合を見てみましょう。


import calendar

year = 2024
month = 2

_, days = calendar.monthrange(year, month)
print(f"{year}年{month}月は{days}日あります。")

2024年2月は29日あります。

このように、特別な処理を自分で書かなくても、うるう年も自動的に判定してくれるので安心です。

-

5. 月初の曜日を使って応用しよう

5. 月初の曜日を使って応用しよう
5. 月初の曜日を使って応用しよう

monthrange()のもうひとつの戻り値「月初の曜日」も便利です。たとえば、カレンダーのように曜日を表示したいときに使えます。

曜日の数字は以下のように割り当てられています:

  • 0:月曜日(Monday)
  • 1:火曜日(Tuesday)
  • 2:水曜日(Wednesday)
  • 3:木曜日(Thursday)
  • 4:金曜日(Friday)
  • 5:土曜日(Saturday)
  • 6:日曜日(Sunday)

たとえば、2025年2月1日は土曜日なので、「5」が返ってきます。

6. 月ごとの日数をすべて表示する例

6. 月ごとの日数をすべて表示する例
6. 月ごとの日数をすべて表示する例

ここでは、1月から12月まで、それぞれ何日あるのかをまとめて表示するサンプルです。


import calendar

year = 2025

for month in range(1, 13):
    _, days = calendar.monthrange(year, month)
    print(f"{year}年{month}月は{days}日です。")

2025年1月は31日です。
2025年2月は28日です。
...
2025年12月は31日です。

このように、for文(繰り返し処理)を使うことで、カレンダー情報を一気に取得できます。

7. ユーザーから年と月を入力して日数を表示しよう

7. ユーザーから年と月を入力して日数を表示しよう
7. ユーザーから年と月を入力して日数を表示しよう

ユーザーが入力した年と月に対して、日数を調べる簡単なプログラムです。


import calendar

year = int(input("年を入力してください(例:2025):"))
month = int(input("月を入力してください(例:2):"))

_, days = calendar.monthrange(year, month)
print(f"{year}年{month}月は{days}日あります。")

このように、パソコン初心者でも簡単に使えるように、入力機能と組み合わせれば便利なツールになります。

8. よくあるエラーと注意点

8. よくあるエラーと注意点
8. よくあるエラーと注意点

最後に、初心者の方が間違えやすいポイントを紹介します。

  • 月の指定が1〜12以外になるとエラーになります
    → たとえば「13」や「0」などは存在しない月なので、ValueErrorが発生します。
  • 文字列のままではなく、整数(int型)で渡すこと
    → 入力値はint()で変換してからmonthrange()に渡しましょう。
  • 曜日の数字は0〜6であることを覚えておこう
    → 月曜が0、日曜が6という順番は少し直感と違うかもしれませんが慣れましょう。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHPのマルチバイト文字列を正しく扱う方法!初心者向けにmb_strlenとmb_substrをやさしく解説
New2
PHP
PHP の break, continue の使い方を完全解説!初心者でもわかるループ制御
New3
Python
Pythonで日本の元号を扱う方法を徹底解説!令和・平成の変換もバッチリ対応
New4
Python
Pythonの三項演算子とは?一行で条件分岐を記述する方法
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.2
Java&Spring記事人気No2
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
Pythonのライブラリとは?標準ライブラリとサードパーティライブラリの違いを初心者向けに解説!
No.5
Java&Spring記事人気No5
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.6
Java&Spring記事人気No6
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.7
Java&Spring記事人気No7
PHP
PHP の基本構文(開始タグ・コメント・インデント)を完全ガイド!初心者向け解説
No.8
Java&Spring記事人気No8
PHP
PHP のデータ型を完全ガイド!初心者でもわかる int, string, float, bool など
-
-