Edited at

PHPで月末日を取得する

More than 5 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】月末・月初の出力方法