Pythonを使って月日数の差分を計算し、加算する方法を詳解

日付を扱う上で、月日数を計算する必要がある場面があります。例えば、ある日から3ヶ月後の日付を求めたり、2つの日付の差分を求めたりするときに月日数の計算が必要になります。Pythonを使えば、簡単に月日数の計算ができます。

Pythonで特定の月の日数を計算する方法

Pythonで特定の月の日数を計算するには、calendarモジュールを使用します。calendar.monthrange()関数を使うと、指定した月の日数とその月の最初の曜日をタプルで返します。

import calendar
# 2022年2月の日数を計算する
year = 2022
month = 2
days_in_month = calendar.monthrange(year, month)[1]
print(f"{year}年{month}月の日数は{days_in_month}日です。")

上記コードの実行結果は以下の通りです。

2022年2月の日数は28日です。

Pythonで特定の月の日数を取得するためのコード例

以下は、ユーザーから年月を入力して、その月の日数を求めるプログラムの例です。

import calendar
year = int(input("年を入力してください: "))
month = int(input("月を入力してください: "))
days_in_month = calendar.monthrange(year, month)[1]
print(f"{year}年{month}月の日数は{days_in_month}日です。")

上記コードを実行すると、年と月の入力を求められるので、適切な値を入力してください。

Pythonで月を加算する方法

Pythonで月を加算するには、datetimeモジュールを使用します。datetimeオブジェクトのtimedelta()メソッドを使うと、指定した日数や月数、年数を加算した日付を求めることができます。

import datetime
# 2022年5月1日から3ヶ月後の日付を求める
date = datetime.date(2022, 5, 1)
months_to_add = 3
new_date = date + datetime.timedelta(days=months_to_add*30)
print(f"{date}から{months_to_add}ヶ月後は{new_date}です。")

上記コードの実行結果は以下の通りです。

2022-05-01から3ヶ月後は2022-07-30です。

Pythonで月を加算するためのコード例

以下は、ユーザーから年月と加算する月数を入力して、加算後の日付を求めるプログラムの例です。

import datetime
year = int(input("年を入力してください: "))
month = int(input("月を入力してください: "))
months_to_add = int(input("加算する月数を入力してください: "))
date = datetime.date(year, month, 1)
new_date = date + datetime.timedelta(days=months_to_add*30)
print(f"{year}年{month}月から{months_to_add}ヶ月後は{new_date}です。")

上記コードを実行すると、年と月、加算する月数の入力を求められるので、適切な値を入力してください。

Pythonで月の差分を計算する方法

Pythonで月の差分を計算するには、dateutilモジュールを使用します。dateutil.relativedelta()関数を使うと、2つの日付の差分を月単位で求めることができます。

import datetime
from dateutil.relativedelta import relativedelta
# 2022年5月1日と2022年7月30日の月の差分を求める
date1 = datetime.date(2022, 5, 1)
date2 = datetime.date(2022, 7, 30)
months_diff = relativedelta(date2, date1).months
print(f"{date1}と{date2}の月の差分は{months_diff}ヶ月です。")

上記コードの実行結果は以下の通りです。

2022-05-01と2022-07-30の月の差分は2ヶ月です。

Pythonで月の差分を計算するためのコード例

以下は、ユーザーから2つの日付を入力して、その差分を月単位で求めるプログラムの例です。

import datetime
from dateutil.relativedelta import relativedelta
year1 = int(input("1つ目の日付の年を入力してください: "))
month1 = int(input("1つ目の日付の月を入力してください: "))
day1 = int(input("1つ目の日付の日を入力してください: "))
year2 = int(input("2つ目の日付の年を入力してください: "))
month2 = int(input("2つ目の日付の月を入力してください: "))
day2 = int(input("2つ目の日付の日を入力してください: "))
date1 = datetime.date(year1, month1, day1)
date2 = datetime.date(year2, month2, day2)
months_diff = relativedelta(date2, date1).months
print(f"{date1}と{date2}の月の差分は{months_diff}ヶ月です。")

上記コードを実行すると、2つの日付の年月日の入力を求められるので、適切な値を入力してください。

まとめ

Pythonを使えば、簡単に月日数の計算や月の加算、月の差分の計算ができます。日付を扱う上で必要な機能なので、覚えておくと便利です。