CarbonのaddMonthsNoOverflowで柔軟に対応

最近は composer を利用することが多いので、日付操作にも Carbon を使っています。

strtotime の 2038 年問題が気になっているわけではないですが、PHP としても日付は DateTime を使うことを推奨していることですし。

ちなみに、2038 年に 32bit のサーバを動かしているシステムがあるとも思えないので、シビアに考えることはないですけどね。

さて、話が少し脱線しましたが、Carbon には addMonthsNoOverflow() というメソッドが用意されていて、ここに 1 を渡した場合は、2018-02-28 が返ってくるのです。

$inudoshi = new Carbon('2018-01-31');
$inudoshi->addMonthsNoOverflow(1);

date や strtotime を使っていた頃みたいに、変にラッパー関数を書かなくても、Carbon なら問題なく翌月や先月の操作ができます。

ちなみに、addYearsNoOverflow() はないですが、addMonthsNoOverflow を応用して、引数を 1 * Carbon::MONTHS_PER_YEAR にしても良さそうです。

// うるう日の1年後
$inudoshi = new Carbon('2016-02-29');
$inudoshi->addMonthsNoOverflow(1 * Carbon::MONTHS_PER_YEAR);

Tips記事一覧

新着記事一覧です。

関連記事一覧

「Carbonで月末から正しく翌月末の日付を求める」に関連した記事一覧です。

TOP