Подход, используемый @Dave, верен, если вы хотите добавить количество дней в текущем месяце к текущей дате, но я не уверен, что это то, что вы ищете.Исходя из вашего вопроса и комментариев в вашем коде, мне кажется, что вы хотите найти последний день месяца, а не количество месяцев в будущем.Это не так просто, так что здесь идет.Сначала решение из @Dave как функция:
function addMonth($date, $count) {
$dt = DateTime::createFromFormat("Y-m-d", $date)->modify('+'.$count.' month')->format("Y-m-d");
return $dt;
}
Если вызовы следующие:
echo '<li>Start: '.addMonth('2019-01-31', 0).'</li>';
echo '<li>Plus 1 month: '.addMonth('2019-01-31', 1).'</li>';
echo '<li>Plus 3 months: '.addMonth('2019-01-31', 3).'</li>';
echo '<li>Plus 12 months: '.addMonth('2019-01-31', 12).'</li>';
echo '<li>Plus 13 months: '.addMonth('2019-01-31', 13).'</li>';
, вывод будет:
- Start: 2019-01-31
- плюс 1 месяц: 2019-03-03
- плюс 3 месяца: 2019-05-01
- плюс 12 месяцев: 2020-01-31
- Плюс 13 месяцев: 2020-03-02
Если вы хотите последний день месяца, количество месяцев в будущем функция должнабыть:
function addMonth($date, $count) {
$start = new DateTime($date);
$start->modify( 'first day of this month' );
$start->modify('+'.$count.' month');
$dt = $start->format('Y-m-t');
return $dt;
}
, и тогда вывод будет:
- Начало: 2019-01-31
- Плюс 1 месяц: 2019-02-28
- Плюс 3 месяца: 2019-04-30
- Плюс 12 месяцев: 2020-01-31
- Плюс 13 месяцев: 2020-02-29
что, я думаю, ты хочешь.Я надеюсь, что это помогает.