【PHP】月末日を取得する

  • 投稿 : 2016-11-21
$yy = date("Y"); //年
$mm = date("m"); //月

$last_day = date('j', mktime(0, 0, 0, $mm + 1, 0, $yy)); 

echo $last_day;

定型文みたいな感じで使われてるようです。
なぜ、上記で月末日がわかるかといえば、mktime関数の仕様をみるとはっきりします。


int mktime ($hour,$minute,$second ,$month,$day,$year)

month
前年末から数えた月数。1 から 12 までの場合は、カレンダーどおりのその年の「月」を表します。 (負の値を含めた) 1 より小さい値は、前年の月を逆順でたどります。 つまり 0 なら 12 月、-1 なら 11 月になるということです。 12 より大きい値は、その翌年以降の該当する月を表します。

day
前月末から数えた日数。1 から 28、29、30、31 (月によって異なる) までの場合は、その月の「日」を表します。 (負の値を含めた) 1 より小さい値は、前月の日を逆順でたどります。 つまり 0 なら前月の末日、-1 ならそのさらに前日になるということです。 その月の日数より大きい値は、翌月以降の該当する日を表します。
PHP: mktime - Manual

翌月の0日を指定すると、今月末になるというのを利用しているわけですね。あと、月に+1してますが、12を超えた場合でも翌月として処理してくれるので問題なさそうです。

スポンサーリンク

タグ#PHP#code