日付の加算・減算

日付に年・月・週・日を足したり引いたりします。月末は人が考えるとおりに扱います。

方向

年・月・週・日で指定した期間だけ、日付を先へ進めたり前へ戻したりします。どの項目も省略でき、組み合わせて使えます。

仕組み

まず年と月を月として適用します。到達した月にその日がない場合は、その月の末日に合わせます。1月31日の1か月後は2月28日、うるう年なら2月29日です。

週と日はその調整の後に日数として加算されるため、常に指定したとおりの日数だけ日付が動きます。

順序は重要で、恣意的なものではありません。先に月、次に日というのはあらゆるカレンダーアプリが使う慣行で、1か月足してから1日足したときに人と同じ答えになるのはこの順序だけです。

例

ケース 入力 結果
1月の末日に1か月を足す 2026-01-31に1か月を足す 2026-02-28(土曜日)

よくある質問

1月31日の1か月後が3月3日にならないのはなぜですか?

それはオーバーフローであって、日付ではないからです。PHPは月に1を足して31日をそのまま残すことでこの結果を出しますが、2月には31日がありません。2月28日に合わせるのが、契約や家賃の周期、そして人が「1か月後」と言うときの意味です。

タイムゾーンやサマータイムは結果に影響しますか?

いいえ。計算はUTCの暦日に対して行うので、1日は常に1日です。特定の瞬間をタイムゾーン間で変換したい場合は、時差変換をご利用ください。

週末や祝日は飛ばされますか?

いいえ、すべての日を数えます。営業日だけを数えるのは別の問題で、週の勤務パターンと自分で入力した祝日リストを使って営業日計算が答えます。

知っておきたいこと

  • 日付はUTCの暦日として扱い、タイムゾーンやサマータイムの調整は一切行いません。
  • 同じ期間を足してから引いても、元の日付に戻るとは限りません。これは月の長さの性質であって不具合ではありません。1月31日がいったん2月28日に調整されると、31日だったという情報は失われます。

日付と時間のすべてのツール