Я хочу добавить месяц к текущей дате. Я нашел код здесь на stackoverflow, и он работает - но он возвращает неправильный день. Удаляет день с текущей даты.
Код:
function add_months($months, DateTime $dateObject)
{
$next = new DateTime($dateObject->format('Y-m-d H:i:s'));
$next->modify('last day of +'.$months.' month');
if($dateObject->format('d') > $next->format('d')) {
return $dateObject->diff($next);
} else {
return new DateInterval('P'.$months.'M');
}
}
function endCycle($d1, $months)
{
$date = new DateTime($d1);
$newDate = $date->add(add_months($months, $date));
$newDate->sub(new DateInterval('P1D'));
$dateReturned = $newDate->format('Y-m-d H:i:s');
return $dateReturned;
}
$today = date("Y-m-d H:i:s");
$ymd = DateTime::createFromFormat('Y-m-d H:i:s', $today)->format('Y-m-d H:i:s');
echo(endCycle($ymd, 1)); //returns wrong day
Итак, когда я покупаю месяц, я получаю 29 дней. Когда я покупаю снова, я получаю -2 дня, потому что он удаляет день из существующей даты истечения срока действия в базе данных.
Что не так с расчетом даты? ..
Спасибо :)
С наилучшими пожеланиями