Help us understand the problem. What is going on with this article?

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

akase244
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away