【PHP】PHPで月末を取得する方法について

おはようございます。

今日は、「PHPで月末を取得する方法について」です。

今作ってるサイトで毎月の月末を取得する方法を調べたので、今日はそれを書いていこうと思います。

せっかちな人のために、結論は

<?php
for($m=1;$m<=12;$m++){
  $targetMonth = date('Y-'.$m);
  $lastMonthDate[$m] =  date('Y-m-d', strtotime('last day of ' . $targetMonth));
  echo $lastMonthDate[$m];
}
?>

です。
閏年もちゃんと29日になります。)

調べてると「今月末」の日付の取り方で

<?php
echo date('Y-m-t’);
?>

といったコード等はよく出てくるのですが、これだとあくまで「今月分」しか取れません。

安易にこれをforでまわすと

<?php 
for($m=1;$m<=12;$m++){
  echo date('Y-'.$m.'-t’);
//結果↓
//2014-1-31
//2014-2-31
//2014-3-31
//2014-4-31...
}
?>

となってしまいますので注意しましょう
(「t」のところが実行時の月末(5月なので31)が入ってしまうためです。)

簡単そうで、ハマりやすい(自分がハマっただけですが)部分かと思いますので、しっかり期待された値が取得できているかチェックが必要ですね。


他にも、こんな書き方もあるみたいです。

<?php 
$year = date('Y');
for($m=1;$m<=12;$m++){
  echo date('Y-m-t', mktime(0, 0, 0, $m, 1, $year));
//結果↓
//2014-1-30
//2014-2-28
//2014-3-31
//2014-4-30... 
}
?>

参考URLはコチラ
PHP 指定した月の月末日を取得 -でじうぃき

※リンク先の2つ目のコードが参考コードですが、このコードは閉じカッコ「)」が一つ足りないので、コピペするとエラーになりますので注意です。

ご一読頂きまして、ありがとうございました。