PHP 月末の日付の取得

PHPで月末の日付を取得するのにはまったので、ハックに残しておきます。 nヶ月後の末日は、以下のコードで一見取りたくなるのですが、以下のように1〜3月付近で予期していない挙動見せることがあるそうです。

// nヵ月後
echo date('Y-m-d', strtotime(date('Y-m-t') . '-n month'));

//2月が表示されない
echo date('Y-m-d', strtotime('2014-01-29 +1 month')); // 2014-03-01
echo date('Y-m-d', strtotime('2014-03-31 -1 month')); // 2014-03-03

これを防ぐには、以下のように取得すると1~3月付近も良いそうです。

echo date('Y-m-t', strtotime(date('Y-m-01') . '-n month'));

参考になったサイト

PHPで月末日を取得する