PHP
date
datetime

日時の計算にはライブラリ(strtotime)を使おう

事始め

こういう計算式を見たことがないですか?

define('YEAR_SECONDS', 365 * 24* 60 * 60);

// 次の年を取得
$next_year = date('Y', time() + YEAR_SECONDS);

これを見て普通じゃね?って思った人はちょっと待って下さい
残念ながらこのコードは間違いです

簡単に反証出来るのでやってみましょう

反証

define('YEAR_SECONDS', 365 * 24* 60 * 60);

$lib_calc_seconds = strtotime('+48 years', 0);
$self_calc_seconds = 48 * YEAE_SECONDS;

echo($lib_calc_seconds - YEAR_SECONDS); // 1036800

差分が出ていますね。理由は簡単です
うるう年を考慮していないからです

万年カレンダーを作ったことがある人はすぐに分かったかもしれないですね

ではコードを修正してみましょう

修正

$next_year = date('Y', strtotime('+1 years'));

これだけです。むしろ簡単になりましたね
これなら何百年先でも差分は出ません
PHP万歳!

まとめ

今回の趣旨は面倒なことはライブラリに頼ろうということです
きっと自分で書くより正確で簡単です