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

Pythonで月末・月初を取得する方法を完全ガイド!初心者でもわかる日時操作

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

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

生徒

「Pythonで月末の日付を自動で出したいんですが、どうやればいいんですか?」

先生

「Pythonには、カレンダー計算を助けてくれる便利なcalendarモジュールがあります。これを使うと月末や月初を簡単に求められますよ。」

生徒

「カレンダーの計算って難しそうですが、覚える必要がありますか?」

先生

「心配しなくて大丈夫です。Pythonが自動で計算してくれるので、短いコードを書くとすぐに月末や月初を取得できますよ。」

1. Pythonで月末・月初を扱うための基本知識

1. Pythonで月末・月初を扱うための基本知識
1. Pythonで月末・月初を扱うための基本知識

Pythonの日時操作では、datetimeモジュールとcalendarモジュールをよく組み合わせて使います。特に月末を求めるときに便利なのがcalendar.monthrange()という関数です。この関数は、指定した年と月に対して「月の最初の曜日」と「月の日数」を返します。ここで得られる「日数」を使えば、月末の日付を一瞬で判定できます。

プログラミング初心者の方でも、カレンダーの仕組みを覚えなくても問題ありません。Python が自動で正しい日付を計算してくれるため、安心して使うことができます。例えば「2月は28日なのか29日なのか」などを気にする必要はなく、コードが正しい結果を返してくれます。

2. calendar.monthrangeで月末の日付を取得する方法

2. calendar.monthrangeで月末の日付を取得する方法
2. calendar.monthrangeで月末の日付を取得する方法

まずは実際に月末を取得するコードを見てみましょう。ここでは現在の日付から年と月を取り出し、その月の最終日を求めます。月末の日付を自動で求める処理は、日報作成、売上集計、月次レポートなどのシステムでもよく使われます。


import datetime
import calendar

today = datetime.date.today()
year = today.year
month = today.month

last_day = calendar.monthrange(year, month)[1]
month_end = datetime.date(year, month, last_day)

print(month_end)

このように、calendar.monthrange()が返す2番目の値がその月の日数です。プログラムではそれをそのまま月末の日付として使います。初心者の方がつまずきやすいのは、「monthrangeの返り値がタプルである」という点ですが、左から順番に番号が付いていると考えると理解しやすいです。


2025-12-31

3. 月初の日付を取得する方法

3. 月初の日付を取得する方法
3. 月初の日付を取得する方法

月初はとても簡単で、常に「1日」と決まっています。そのため、年と月さえわかればいつでも同じ方法で取得できます。月初を使う処理は、期間の開始日を設定するときや、月ごとの統計データを作成するときなど、幅広い場面で登場します。


import datetime

today = datetime.date.today()
year = today.year
month = today.month

month_start = datetime.date(year, month, 1)

print(month_start)

2025-12-01

このように、月初はいつでも1日なので、datetime.date(year, month, 1)と書くだけで取得できます。月末と合わせて覚えておくと、日付範囲を扱うコードがとても書きやすくなります。

4. 任意の年月の月末・月初を取得する応用例

4. 任意の年月の月末・月初を取得する応用例
4. 任意の年月の月末・月初を取得する応用例

次に、ユーザーが入力した年と月から月末や月初を計算する方法も覚えておくと便利です。業務システムでは「指定月のレポートを作りたい」という場面が多いため、柔軟に年月を指定できると実用性が高まります。


import datetime
import calendar

year = 2025
month = 5

first_day = datetime.date(year, month, 1)
last_day = calendar.monthrange(year, month)[1]
end_day = datetime.date(year, month, last_day)

print(first_day, end_day)

2025-05-01 2025-05-31

実務では「来月の初日」「先月の最終日」を求める処理もよく出てきます。こうした計算も、datetimecalendarを組み合わせれば簡単に実装できます。Pythonのこの柔軟さは、日付を扱うプログラムを書き始めたばかりの方にも大きな助けとなります。

5. 月末や月初を扱うときのよくあるつまずきポイント

5. 月末や月初を扱うときのよくあるつまずきポイント
5. 月末や月初を扱うときのよくあるつまずきポイント

月末や月初の処理を書くとき、初心者がつまずきやすいポイントがあります。それは「日付の計算を自分でしようとしてしまう」という点です。月によって日数が違うため、手作業で条件分岐を書こうとするとすぐに複雑になります。しかし、Python にはこうした計算を自動で行う仕組みが標準で用意されています。

また、monthrangeの返す曜日を誤って使ってしまうケースもよくあります。最初の値は「月の最初の曜日」で、実際の月末日には関係ありません。2番目の値だけを使うことをしっかり覚えておくと安心です。このような小さなポイントを押さえることで、日付計算の精度と扱いやすさが格段に向上します。

カテゴリの一覧へ
新着記事
New1
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New2
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
New3
Flask
FlaskでCSRF対策を実装する方法!安全なフォーム送信を学ぼう
New4
Python
Pythonの文字列型(str)を完全解説!連結・分割・検索の方法を紹介
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本