月数計算
計算結果
間の経過月数
- 余りの日数
- 18 日
- 計算結果の日付
- 2026年7月1日
- 曜日
- 水曜日
月についての2つの問いを、同じ3つの入力から答えます。1つ目は2つの日付の間に走り切った整月が何か月あるかです。2026年1月1日から9月19日までは8か月と余りの18日で、この18日は黙って捨てずに報告します。2つ目は、ある日付を選んだ月数だけ前後に動かしたとき、どこに着地するかです。この2つは同じ計算ではありません。1か月は28日から31日まであり、着地する日は算術ではなく行き先の月が決めるからです。
公式
加算する月数、着地の日付 = 開始日をその月数だけ進めた日。行き先の月に同じ日の号がなければその月の末日に丸める。間の経過月数 = 開始日から終了日までの暦の整月
- 開始日
- 最初の日付。動かす対象にもなります
- 終了日
- 2番目の日付。2つを入れ替えても月数は同じです
- 加算する月数
- 動かす整月の数。負の値にすると日付は前に戻ります
- 間の経過月数
- 整月だけ。1月1日から12月31日までは、1日足りないので12ではなく11です
- 余りの日数
- 最後の整月を超えた分の日数。0から30までの任意の値になります
- 計算結果の日付
- 開始日を動かした着地先。月末の丸めが適用されます
期間が日数ではなく月数で示されるときに使います。賃貸借、保証、通知期間、定期購読、分割払いなどです。そうしたものには整月が正しい単位で、余りの日数はその期間が本当に満了したかどうかを教えてくれます。12か月の契約が1日足りなければ、それは12か月ではありません。既定の6か月は2つの答えの形を同時に見せてくれます。できないのは小数の月です。半月は暦が着地先として出せないので、月数は整数でなければなりません。
計算例
2026年1月1日から9月19日までと、開始日から6か月後
- 2026年1月1日から整月8か月ぶんで2026年9月1日に着く
- 9月19日はそこから18日後なので、余りは18日で、月数は8のまま
- この18日が効く: これがなければ9月1日と9月19日が同じに見えてしまう
- 開始日を6か月後ろに動かすと2026年7月1日、水曜日
このページが1つではなく4つの数を報告する理由が、この余りの日数です。長さが2週間違う2つの期間が、どちらも8か月と読めてしまいます。
2026年1月31日の1か月後
- 2026年2月は28日までなので、動かした先に着地すべき2月31日が存在しない
- 着地の日付はその月の末日に丸まる: 2026年2月28日
- 1月31日から3月1日までの隔たりは、整月1か月と1日
- その余りはマイナス30ではなく1。日の号を引くやり方だと符号も大きさも間違える
月末の丸めと余りの日数は、同じ規則を裏表から見たものです。1か月を30日として実装したツールでは、どちらも間違えます。
2024年1月31日の1か月後
- 2024年はうるう年なので、2月は29日ある
- 丸めの行き先もそれに合わせて動く: 着地の日付は2024年2月29日、木曜日
- 月数と余りは1と1のままで変わらない
- 2026年の例と違うのは着地の日付だけで、その差はちょうど1日
同じ指示、同じ日の号で、答えが1日違います。この2つの例を分けているのはうるう年だけです。
まる1年を月数で読む
- 2026年1月1日から2027年1月1日まではちょうど12か月なので、余りは1ではなく0
- この期間の日数は365日だが、月数はきれいに12
- 開始日を12か月動かすと、1年後の同じ日の号に戻る: 2027年1月1日
- 2027年1月1日は金曜日
ここでは12か月と365日が同じ期間を指しますが、2028年には一致しません。2つの単位を換算せず別々に報告しているのは、そのためです。
適用限界
整月は、日数を平均の月の長さで割るのではなく、暦の月で数えます。そのため答えは月がどこに落ちるかで変わります。1月1日から2月1日までは1か月で、2月1日から3月1日までも1か月ですが、前者は31日で後者は28日です。月末の丸めは表計算ソフトが使う約束に従い、翌月に繰り越さず行き先の月の末日に着地するので、29日・30日・31日からの移動はまる1か月より少ない日数しか動かないことがあります。月数は整数でなければなりません。小数の月には着地先がないからです。また2つの日付を入れ替えても符号は反転しません。隔たりの大きさに向きはないからです。
よくある質問
- 2026年1月1日から9月19日までは何か月か
- 整月8か月と18日です。1月1日から8か月で9月1日に着き、9月19日はその18日後です。これを9か月と数えると今度は逆に間違えます。9か月目は10月1日まで終わらないからです。このページの答えはどれも同じ分け方をしているので、2つの数はいつも本当の隔たりに足し合わさります。
- 日付に月を足すにはどうするのか
- 開始日と月数を入れて、着地の日付を読んでください。2026年1月1日の6か月後は2026年7月1日で、行き先の月に余裕があれば日の号はそのまま保たれます。負の数なら逆向きに動くので、2026年7月1日からマイナス6か月で2026年1月1日に戻ります。
- 行き先の月が短すぎるときはどうなるのか
- 着地の日付がその月の末日に丸まります。2026年1月31日の1か月後は2026年2月28日、2024年1月31日の1か月後は2024年2月29日です。この月末の丸めは表計算ソフトが使う規則で、1か月の移動が31日ではなく28日ぶんしか動かないことがあるのはこのためです。
- 1月1日から12月31日までが11か月しかないのはなぜか
- 12か月目が終わっていないからです。1か月はある日の号から翌月の同じ日の号までなので、12か月目は1月1日に閉じます。2026年1月1日から12月31日までだと整月は11か月で余りは30日、日数は364日になります。
- 2つの日付の順番は関係あるのか
- 月数には関係ありません。入れ替えても答えは同じです。2つの日付の隔たりの大きさは、どちらを先に読むかによらないからです。1月1日から9月19日までと、9月19日から1月1日までは、どちらも8か月と18日です。符号が効くのは動かす月数のほうだけで、それは最初の日付に適用されます。
参考文献
- relativedelta — 日付計算ライブラリdateutilのモジュール — dateutil project documentation
- The Gregorian calendar — Claus Tøndering, Calendar FAQ