カテゴリ: Python 更新日: 2026/03/11

Pythonで月末・月初を取得する方法を解説!初心者でもわかるcalendarモジュールの使い方

Pythonで月末・月初を取得する方法(calendar モジュールの活用)
Pythonで月末・月初を取得する方法(calendar モジュールの活用)

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

生徒

「Pythonで毎月の最初の日とか、最後の日って簡単に出せるんですか?」

先生

「もちろんできますよ!Pythonのcalendarモジュールを使えば、月初や月末の日付を簡単に取得できます。」

生徒

「月末って何日になるか毎月バラバラですよね。どうやって調べてるんですか?」

先生

「いい質問ですね!それじゃあ実際に、calendarモジュールの使い方を一緒に見ていきましょう。」

1. 月初・月末とは?Pythonでどう使う?

1. 月初・月末とは?Pythonでどう使う?
1. 月初・月末とは?Pythonでどう使う?

プログラミングの世界、特に事務処理やデータ分析の自動化において、「月初(げっしょ)」「月末(げつまつ)」を正しく扱うことは非常に重要です。月初はその月の1日を指しますが、問題は「月末」です。30日だったり31日だったり、はたまた2月のように28日や29日(うるう年)だったりと、月によってバラバラですよね。

例えば、以下のようなケースを想像してみてください。

  • 「毎月末日に自動でお小遣い帳の集計をしたい」
  • 「今月が残りあと何日あるか計算したい」

これらを人間が手動で設定するのは大変ですが、Pythonのcalendarモジュールを使えば、プログラムが自動でカレンダーを確認して「今月の最後は○日だ!」と一瞬で判断してくれます。

まずは、一番シンプルな考え方をイメージするために、身近な例をコードにしてみましょう。プログラミングが初めての方でも、なんとなく「こう動くんだな」と分かれば大丈夫です。


# 2024年(うるう年)の2月を例に考えてみましょう
month_name = "2月"
start_day = 1       # 月初は必ず1日
end_day = 29         # 2024年の2月は29日まで

print(f"{month_name}のスタートは{start_day}日、終わりは{end_day}日です!")

このように、日付を数字として扱えるようになると、Pythonで「自動カレンダー」を作る第一歩になります。次の章からは、Pythonがどうやって自動でこの「29日」や「31日」を見つけ出すのか、その具体的な魔法(関数)について詳しく解説していきます。

2. Pythonのcalendarモジュールで月末日を取得する基本

2. Pythonのcalendarモジュールで月末日を取得する基本
2. Pythonのcalendarモジュールで月末日を取得する基本

Pythonでカレンダーに関する操作を効率化したいなら、標準ライブラリのcalendarモジュールが非常に便利です。このモジュールは追加のインストールが不要で、インポートするだけで「特定の月が何日まであるか」「指定した日が何曜日か」といった情報を簡単に取得できます。

特に、実務でよく使われるのが「月末の日付(最終日)を自動で判定する」機能です。月によって30日だったり31日だったり、あるいは、うるう年の2月を判定するのは面倒ですが、calendar.monthrange()を使えば一瞬で解決します。

monthrangeの仕組み:
この関数に「年」と「月」を渡すと、「その月の1日の曜日」「その月の日数(末日)」の2つをセット(タプル形式)で返してくれます。

プログラミングが初めての方でも扱いやすい、シンプルなサンプルコードを見てみましょう。


import calendar

# 調べたい「年」と「月」を設定します
year = 2026
month = 2

# monthrangeを使って月末日を取得(戻り値の2番目が日数です)
first_weekday, last_day = calendar.monthrange(year, month)

print(f"{year}年{month}月の末日は、{last_day}日です。")
# 実行結果:2026年2月の末日は、28日です。

このコードのポイントは、last_dayという変数にその月の最後の日(28や31など)が自動的に代入される点です。これにより、カレンダーを目視で確認したり、複雑なif文で月ごとの日数を条件分岐させたりする手間が一切なくなります。初心者の方こそ、まずはこの便利な関数からマスターしましょう。

3. 月末を取得する基本コード

3. 月末を取得する基本コード
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. 月初を取得する方法も知っておこう

4. 月初を取得する方法も知っておこう
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形式で取得する方法

5. 月末の日付をdatetime形式で取得する方法
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. 現在の月の月末・月初を自動取得する

6. 現在の月の月末・月初を自動取得する
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. 月末の日付を使ったよくある用途

7. 月末の日付を使ったよくある用途
7. 月末の日付を使ったよくある用途

月末や月初の日付は、実際の業務やアプリでもよく使われます。たとえば:

  • 給料計算の日付チェック
  • スケジュールの締め切り処理
  • 月末のログ出力や集計

人間だと「今月末は何日だっけ?」とカレンダーを見て確認しますが、プログラムに任せれば自動で正確に処理できます。

8. calendarモジュールで他にできること

8. calendarモジュールで他にできること
8. calendarモジュールで他にできること

calendarモジュールは月末だけでなく、次のような便利機能もあります。

  • calendar.isleap(year):うるう年かどうかを判定
  • calendar.weekday(year, month, day):その日が何曜日か
  • calendar.monthcalendar(year, month):その月のカレンダー表をリストで取得

日付の処理は、datetimeモジュールとcalendarモジュールをうまく組み合わせて使うのがコツです。

コメント
コメント投稿は、ログインしてください

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

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHPのメモリ管理と変数の破棄方法をやさしく解説!初心者でもわかるunsetの使い方
New2
Python
Pythonのリトライ処理を完全ガイド!初心者でもわかるtry-except応用テクニック
New3
PHP
PHPの関数を変数に代入する方法を解説!初心者向けコールバック関数の使い方
New4
Python
Pythonの例外発生の基本をマスター!初心者でもわかるraise文の使い方ガイド
人気記事
No.1
Java&Spring記事人気No1
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.2
Java&Spring記事人気No2
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.3
Java&Spring記事人気No3
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.4
Java&Spring記事人気No4
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.5
Java&Spring記事人気No5
PHP
PHP の MySQL 接続の基本(mysqli, PDO)を完全解説!初心者向けガイド
No.6
Java&Spring記事人気No6
PHP
PHPのfor, while, do-whileループの使い方を完全ガイド!初心者でもわかる繰り返し処理
No.7
Java&Spring記事人気No7
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.8
Java&Spring記事人気No8
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム