日付を扱う上で、月日数を計算する必要がある場面があります。例えば、ある日から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を使えば、簡単に月日数の計算や月の加算、月の差分の計算ができます。日付を扱う上で必要な機能なので、覚えておくと便利です。