Я видел этот код здесь при переполнении стека
function add($date_str, ${
$date = new DateTime($date_str);
$start_day = $date->format('j');
$date->modify("+{$months} month");
$end_day = $date->format('j');
if ($start_day != $end_day)
$date->modify('last day of last month');
return $date;
}
$result = add('2011-01-28', 1); // 2011-02-28
$result = add('2011-01-31', 3); // 2011-04-30
Который увеличивает дату, но не превышает последний день месяца. Но когда я пытаюсь запустить функцию, используя
$dues=add('2011-01-28', 1); echo $dues;
Возвращает ошибку «Объект класса DateTime не может быть преобразован в строку»? Но похоже, что это работает для других людей.
Первая строка вашего кода должна быть:
function add($date_str, $months) {
У вас там синтаксическая ошибка.
Формат функции не правильный. Используйте код ниже
function add($date_str, $months){
$date = new DateTime($date_str);
$start_day = $date->format('j');
$date->modify("+{$months} month");
$end_day = $date->format('j');
if ($start_day != $end_day)
$date->modify('last day of last month');
return $date;
}
$result = add('2011-01-28', 1); // 2011-02-28
$result = add('2011-01-31', 3); // 2011-04-30
Надеюсь, это поможет вам
Все, что мне нужно было сделать, это использовать $dues->format('Y-m-d')