Pythonで月末・月初を取得する方法を解説!初心者でもわかるcalendarモジュールの使い方
生徒
「Pythonで毎月の最初の日とか、最後の日って簡単に出せるんですか?」
先生
「もちろんできますよ!Pythonのcalendarモジュールを使えば、月初や月末の日付を簡単に取得できます。」
生徒
「月末って何日になるか毎月バラバラですよね。どうやって調べてるんですか?」
先生
「いい質問ですね!それじゃあ実際に、calendarモジュールの使い方を一緒に見ていきましょう。」
1. 月初・月末とは?Pythonでどう使う?
「月初(げっしょ)」とは、その月の1日、つまり「最初の日」のことです。一方、「月末(げつまつ)」はその月の「最後の日」のことです。たとえば、2024年2月の月初は2月1日、月末は2月29日になります。
毎月の日数は違いますよね?だから自動で「月末の日にち」を出せたら便利です。Pythonではcalendarモジュールを使えば、こうした計算がかんたんにできます。
2. calendarモジュールの基本とは?
calendarモジュールは、Pythonに標準で入っているカレンダー関連の機能です。インストールなしで使えて、「その月が何日あるか」「曜日は何か」などを調べることができます。
月末の日を知りたいときはcalendar.monthrange()という関数を使います。これは「年」と「月」を渡すと、「その月の最初の曜日」と「その月の日数(末日)」を返してくれます。
3. 月末を取得する基本コード
それでは、実際に月末の日付を取得するPythonコードを見てみましょう。例として2025年9月の月末を求めます。
import calendar
year = 2025
month = 9
# 月末を取得
_, last_day = calendar.monthrange(year, month)
print(f"{year}年{month}月の月末は{last_day}日です")
2025年9月の月末は30日です
calendar.monthrange()は、2つの値を返します。最初は「月初の曜日」、2つ目が「月の日数」です。月末を知りたいなら、2つ目の値だけを使えばOKです。
4. 月初を取得する方法も知っておこう
月初の日付は毎月「1日」ですので、特別な関数を使わなくても簡単にわかります。ただし、年月とセットで扱いたいときはdatetime.dateを使って「年月日」の形で持っておくと便利です。
import datetime
year = 2025
month = 9
first_day = datetime.date(year, month, 1)
print("月初は", first_day)
月初は 2025-09-01
このように、1日を指定するだけで月初の日付が表現できます。
5. 月末の日付をdatetime形式で取得する方法
カレンダーの末日だけでなく、日付として扱いたい場合は、datetime.dateと組み合わせましょう。
import calendar
import datetime
year = 2025
month = 9
_, last_day = calendar.monthrange(year, month)
end_date = datetime.date(year, month, last_day)
print("月末の日付は", end_date)
月末の日付は 2025-09-30
datetime.dateは年月日を扱う便利なクラスで、日付の比較や計算もできます。
6. 現在の月の月末・月初を自動取得する
その時その時の「今の年月」を使って、月初・月末を取得したい場合は、datetime.datetime.today()を使って今日の日付を取得し、そこから計算します。
import calendar
import datetime
today = datetime.date.today()
year = today.year
month = today.month
# 月初と月末
first_day = datetime.date(year, month, 1)
_, last = calendar.monthrange(year, month)
last_day = datetime.date(year, month, last)
print("月初:", first_day)
print("月末:", last_day)
月初: 2025-09-01
月末: 2025-09-30
このように、現在の年月からも簡単に月初・月末を求めることができます。
7. 月末の日付を使ったよくある用途
月末や月初の日付は、実際の業務やアプリでもよく使われます。たとえば:
- 給料計算の日付チェック
- スケジュールの締め切り処理
- 月末のログ出力や集計
人間だと「今月末は何日だっけ?」とカレンダーを見て確認しますが、プログラムに任せれば自動で正確に処理できます。
8. calendarモジュールで他にできること
calendarモジュールは月末だけでなく、次のような便利機能もあります。
calendar.isleap(year):うるう年かどうかを判定calendar.weekday(year, month, day):その日が何曜日かcalendar.monthcalendar(year, month):その月のカレンダー表をリストで取得
日付の処理は、datetimeモジュールとcalendarモジュールをうまく組み合わせて使うのがコツです。