この計算ツールでできること
「日付に月数を加算する計算ツール」は、起点となる日付に整数の月数を加算(マイナス値を入力すれば減算)して、結果となる正確な日付を求めます。単純に日数を足す計算とは異なり、加算後の月が起点の月より日数の少ない月になる場合には特別な処理が必要ですが、本ツールはこれを自動で処理します。
使い方
起点となる日付を選び、加算したい月数を入力します(過去に戻したい場合はマイナスの数値を入力してください)。すると結果の日付が表示されます。内訳の表では、計算後の「年・月・日」を確認でき、日付がその月の末日に自動調整された場合にはその旨が表示されます。
計算式の解説
月の通し番号(カレンダー上のインデックス)は \(\text{(年} \times 12) + (\text{月} - 1) + N\) で求めます。これを 12 で割った商が新しい年、余りが新しい月になります。日はそのまま引き継がれますが、加算後の月にその日が存在しない場合は調整されます。たとえば「1月31日 + 1か月」は「2月31日」になり得ないため、その月の末日(28日または29日)に調整されます。これは多くの表計算ソフトや日付ライブラリの関数と同じ挙動です。
$$\text{Result} = \text{Date}(Y, M+N, \min(D, \text{lastDay}(Y, M+N)))$$
$$M_{new} = ((M-1)+N) \bmod 12 + 1$$
$$D_{new} = \min(D, \text{lastDay}(Y_{new}, M_{new}))$$
計算例
起点を 2024-01-31 とし、1か月を加算します。加算先は2024年2月で、うるう年のため29日まであります。\(31 > 29\) なので日は29に調整され、結果は 2024-02-29 になります。
各月の日数
月の長さはまちまちなので、開始日が対象の月に存在しない場合があります。以下の参考資料はグレゴリオ暦の各月の日数をリストアップしています。
| # | 月 | 日数 |
|---|---|---|
| 1 | 1月 | 31 |
| 2 | 2月 | 28(閏年は29) |
| 3 | 3月 | 31 |
| 4 | 4月 | 30 |
| 5 | 5月 | 31 |
| 6 | 6月 | 30 |
| 7 | 7月 | 31 |
| 8 | 8月 | 31 |
| 9 | 9月 | 30 |
| 10 | 10月 | 31 |
| 11 | 11月 | 30 |
| 12 | 12月 | 31 |
30日の月は4月、6月、9月、11月の4ヶ月です。その他は31日ですが、2月を除きます。2月は唯一長さが変わる月で、閏年は29日、それ以外は28日です。
閏年の決定方法
グレゴリオ暦では、年が以下の規則を満たす場合、それは閏年です:
- 年が4で割り切れ、かつ
- 100で割り切れない、ただし
- 400でも割り切れる場合を除く。
したがって2020年と2024年は閏年です(4で割り切れ、100で割り切れない)。1900年は閏年ではありません(100で割り切れるが400では割り切れない)、一方2000年は閏年です(400で割り切れる)。これが1月31日に1ヶ月足すと2023年は2月28日になり、2024年は2月29日になる理由です。
よくある質問
月末ではどうなりますか? 起点の「日」が加算先の月に存在しない場合は、その月の末日に自動的に調整されます。
月数を引くこともできますか? はい。たとえば -3 と入力すれば、3か月前にさかのぼれます。
うるう年にも対応していますか? はい。末日の計算ではうるう年を自動的に考慮します。そのため、1月31日に1か月を加算すると、うるう年なら2月29日、そうでなければ2月28日になります。