Pythonで特定の年・月の日数を取得する方法を完全解説!初心者でもわかるcalendar.monthrange()
生徒
「Pythonで、今月が何日まであるかを調べることってできますか?」
先生
「できますよ。Pythonにはカレンダーを扱うための便利な仕組みが用意されています。」
生徒
「2月って年によって28日だったり29日だったりしますよね。それも自動で分かるんですか?」
先生
「はい。calendar.monthrange()という機能を使えば、人が考えなくても正しい日数を教えてくれます。」
生徒
「パソコンをほとんど触ったことがなくても大丈夫ですか?」
先生
「もちろんです。画面の見方から、コードの意味まで一つずつ説明します。」
1. Pythonで日付やカレンダーを扱うとは?
Python(パイソン)は、初心者でも読みやすく、やさしい書き方ができるプログラミング言語です。Pythonでは、日付や時間、カレンダーといった「日時操作(にちじそうさ)」も簡単に行えます。
日時操作とは、「今日は何年何月何日か」「この月は何日まであるか」といった、カレンダーに関する計算をプログラムで行うことです。紙のカレンダーを見る代わりに、パソコンに聞くようなイメージです。
2. calendarモジュールとは何か
モジュールとは、便利な道具がひとまとめになった箱のようなものです。Pythonには最初からたくさんのモジュールが用意されています。
calendarモジュールは、カレンダーに関する計算をしてくれる道具箱です。月の日数を調べたり、曜日を計算したりすることができます。
まずは、このcalendarモジュールを「使いますよ」とPythonに伝える必要があります。
import calendar
この1行は、「calendarという道具箱を使えるようにする」という意味です。
3. calendar.monthrange()の基本的な使い方
calendar.monthrange()は、「指定した年と月の情報」を教えてくれる機能です。ここでは特に「その月が何日まであるか」を知るために使います。
使い方はとてもシンプルで、「年」と「月」を数字で指定します。
import calendar
result = calendar.monthrange(2024, 2)
print(result)
このコードでは、「2024年2月」の情報を調べています。
(3, 29)
表示された「(3, 29)」は2つの意味があります。前の数字は曜日、後ろの数字が月の日数です。つまり、2024年2月は29日まであることが分かります。
4. 月の日数だけを取り出す方法
初心者の方は、「曜日はいらないから、日数だけ知りたい」と思うことが多いです。その場合は、2番目の数字だけを取り出します。
Pythonでは、数字の集まりから特定の位置の値を取り出すことができます。
import calendar
year = 2023
month = 11
week, days = calendar.monthrange(year, month)
print(days)
30
この例では、2023年11月が30日まであることが分かります。weekは曜日、daysが日数です。
5. うるう年でも正しく計算できる理由
2月の日数が変わる年を「うるう年」と言います。人が手で計算すると間違えやすい部分ですが、Pythonなら心配ありません。
calendar.monthrange()は、内部で正しいカレンダーのルールを使って計算しています。
import calendar
print(calendar.monthrange(2023, 2)[1])
print(calendar.monthrange(2024, 2)[1])
28
29
このように、年を変えるだけで自動的に正しい日数が表示されます。
6. 実生活に近いイメージで理解しよう
calendar.monthrange()は、「この年のこの月のカレンダーを見せて」とパソコンにお願いするようなものです。
人間がカレンダーをめくって確認する代わりに、Pythonが一瞬で調べてくれます。特に、家計簿、シフト表、予約システムなどで月末日を知りたいときに役立ちます。
7. よくある間違いと注意点
月は「1月〜12月」を「1〜12」で指定します。「0」や「13」を入れるとエラーになります。
また、calendarモジュールをimportし忘れると動きません。エラーが出たときは、まず最初のimportを確認しましょう。
8. 初心者が覚えておきたいポイント
・calendar.monthrange(年, 月)で月の日数が分かる
・結果は「曜日」と「日数」の2つがセットで返ってくる
・2番目の数字が、その月の最大日数
この3つを覚えておくだけで、Pythonの日時操作の第一歩は十分です。