ここで見つけた関数を使用して、月によっては他の月よりも日数が少ないことを考慮して、日付に月を追加しています。
function addMonths($date_str, $months){
$date = new DateTime($date_str);
$start_day = $date->format('j');
var_dump($date->format('Y-m-d'));
$date->modify("+{$months} month");
$end_day = $date->format('j');
var_dump($date->format('Y-m-d'));
if ($start_day != $end_day)
$date->modify('last day of last month');
var_dump($date->format('Y-m-d'));die();
return $date->format('Y-m-d');
}
関数が期待どおりに機能していないため、何が起こっているかを確認するためにいくつかの変数をダンプしました。次のことを試してみましょう。
addMonths('2012-05-31',1)
そして、私は次の間違った出力を取得しています:
string(10) "2012-05-31" string(10) "2012-07-01" string(10) "2012-05-31"
入力日に月を追加すると「2012-07-01」が表示されますが、条件が満たされているため、5月ではなく7月の前月である6月の最終日を取得する必要があります。何が起こっているのかわかりません、助けてくれませんか?