月末を取得する必要があったけど、strtotimeは使えなかった
strtotimeを使ってしまうと、月末に1ヶ月足したりすると、その翌月になってしまったりします。
ex:2012/01/31 + 1month ⇒ 2012/03/02
その時の為の関数が以下。メモ。
private function calc_date($year, $month, $day, $addMonths) { $month += $addMonths; $dt = mktime(0, 0, 0, $month + 1, 0, $year); $endDay = date("d", $dt); if($day > $endDay) $day = $endDay; $dt = mktime(0, 0, 0, $month, $day, $year);//正規化 return date("Y-m-d", $dt); } echo calc_date(2012, 1, 31, 1);
これを使うと、結果として2012/2/29が表示されます。
もっと簡単な方法がありそうですが、これで一旦は月末が取れました。