Python|月初・月末を取得する

1. はじめに

Pythonで「月初・月末を取得する」方法は、日付処理を行う上で非常に役立ちます。たとえば、月単位のレポートを作成したり、スケジュール管理、会計処理などにおいて、「今月の最初の日」や「最後の日」を正確に把握する必要があります。

本記事では、Python標準ライブラリであるdatetimecalendarを活用して、月初・月末の日付を取得する方法を、初心者の方にもわかりやすく解説します。具体的なコードとその実行結果を交えて解説していくので、実務や学習にもすぐに活かせます。

 

2. Pythonで月初・月末を取得する基本方法

2-1. 月初を取得する方法

月初は、「その月の1日」として簡単に取得できます。datetimeモジュールを使って、現在の年月を取得し、日付を「1」に設定することで実現できます。

from datetime import datetime, date

# 今日の日付から月初を作成
today = date.today()
month_start = date(today.year, today.month, 1)

print("月初:", month_start)

実行結果:

月初: 2025-07-01

2-2. 月末を取得する方法(calendar.monthrangeを使用)

月末は、月によって28日〜31日まで異なります。calendarモジュールのmonthrange()関数を使えば、指定した月の最終日を取得できます。

import calendar

# 月末を取得(calendar.monthrangeで日数を取得)
_, last_day = calendar.monthrange(today.year, today.month)
month_end = date(today.year, today.month, last_day)

print("月末:", month_end)

実行結果:

月末: 2025-07-31

 

3. よくある使い方・応用例

3-1. 前月・翌月の月初・月末を取得する

「前月の月初」「翌月の月末」など、対象月を動的に指定したい場合はrelativedeltaを活用するのが便利です(dateutilパッケージが必要です)。

from dateutil.relativedelta import relativedelta

# 前月の月初と月末を取得
prev_month = today - relativedelta(months=1)
prev_start = date(prev_month.year, prev_month.month, 1)
_, prev_end_day = calendar.monthrange(prev_month.year, prev_month.month)
prev_end = date(prev_month.year, prev_month.month, prev_end_day)

print("前月の月初:", prev_start)
print("前月の月末:", prev_end)

実行結果:

前月の月初: 2025-06-01  
前月の月末: 2025-06-30

3-2. 月初・月末でフィルター処理を行う(データ分析向け)

データ分析やレポート作成では、月初・月末を使って期間内のデータをフィルタリングする場面がよくあります。

# 仮のデータリスト(日付だけのリスト)
sample_dates = [
    date(2025, 7, 1),
    date(2025, 7, 15),
    date(2025, 7, 31),
    date(2025, 8, 1)
]

# 今月の範囲に含まれる日付を抽出
month_data = [d for d in sample_dates if month_start <= d <= month_end]
print("今月のデータ:", month_data)

実行結果:

今月のデータ: [datetime.date(2025, 7, 1), datetime.date(2025, 7, 15), datetime.date(2025, 7, 31)]

 

4. 注意点・エラー対策

4-1. calendar.monthrangeの戻り値に注意

calendar.monthrange()は、タプルで(曜日番号, 月の日数)を返します。最終日だけが欲しい場合は2番目の値を使いましょう。

4-2. dateutilが標準ライブラリでないことに注意

relativedeltaを使うには、別途python-dateutilをインストールする必要があります。以下のコマンドで事前にインストールしてください。

pip install python-dateutil

4-3. datetimeとdateの混同に注意

datetime.datetimedatetime.dateは異なる型です。比較時などにエラーが出ないよう、型を統一して扱いましょう。

 

5. まとめ

今回は、Pythonを使って「月初・月末の日付を取得する方法」について詳しく解説しました。

  • datetimeで月初(1日)を簡単に取得
  • calendar.monthrange()で月末の日付を取得
  • relativedeltaを使えば前月・翌月も簡単に
  • 実務での応用例やフィルタリング方法も紹介

この知識は、日次・月次レポートやログ管理などの実務だけでなく、個人プロジェクトや日付操作の理解にも役立ちます。学習の際は、「型の違い」や「ライブラリのインストール」などにも注意して取り組みましょう。

ぜひ、実際の開発に役立ててください!

タイトルとURLをコピーしました