Использование DateTime-> add () или DateTime-> modify ()
Если вы работаете с существующим объектом DateTime, вы можете используйте один из них:
// Your date
$date = new DateTime(); // empty for now or pass any date string as param
// Adding
$date->add(new DateInterval('P2M')); // where P2M means "plus 2 months"
// or even easier
$date->modify('+2 months');
// Checking
echo $date->format('Y-m-d');
Опасайтесь добавления месяцев в PHP, он может переполняться до следующего месяца, если день в исходной дате превышает общее количество дней в новом месяце. То же переполнение происходит с високосными годами при добавлении лет. Как-то это не считается ошибкой разработчиков PHP и просто документируется без решения. Подробнее здесь: PHP DateTime :: изменить добавление и вычитание месяцев
Я нашел, что это самое точечное решение для решения проблемы переполнения:
$day = $date->format('j');
$date->modify('first day of +2 months')->modify('+'. (min($day, $date->format('t')) - 1) .' days');
Я предполагаю, что в вашем коде не более ОДНОГО тега заголовка. Это может происходить по нескольким причинам: