PHP

PHPで月末日を取得する

More than 3 years have passed since last update.

概説

タイトルの通り、PHPで月末日を取得します。

今月の末日を取得する

PHP
echo date('Y-m-t'); // 2014-01-31

もしくは

echo date('Y-m-d', mktime(0, 0, 0, date('m') + 1, 0, date('Y'))); // 2014-01-31

先月の末日を取得する

PHP
echo date('Y-m-d', mktime(0, 0, 0, date('m'), 0, date('Y'))); // 2013-12-31

翌月の末日を取得する

PHP
echo date('Y-m-d', mktime(0, 0, 0, date('m') + 2, 0, date('Y'))); // 2014-02-28

失敗するパターン

なお、strtotimeの引数で'+1 month'、'-1 month'を利用すると見ばえよく書けそうですが、2月の周辺で期待通りの動作をしない場合がある注意が必要です。
この件については、マニュアルでもイロイロと言及されているので、ぜひご一読を。

PHP
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 month'、'-1 month'してあげるとうまくいくということを教えてもらったので、strtotimeを利用した方法を追記しておきます。

先月の末日を取得する

PHP
date('Y-m-t', strtotime(date('Y-m-01') . '-1 month')); // 2013-12-31

翌月の末日を取得する

PHP
date('Y-m-t', strtotime(date('Y-m-01') . '+1 month')); // 2014-02-28

参考URL

date()関数を使って「月初」「月末」を取得する方法
php 月末・月初の出力方法
【PHP】月末・月初の出力方法