Добавление моего решения здесь, так как это тема, которая входит в поиск Google. Это делается для получения следующей даты месяца, исправления любых пропусков, сохранения следующей даты в следующем месяце.
PHP добавляет общее количество дней в текущей дате к текущей дате, например, если вы делаете +1 month
.
Таким образом, применение +1 month
к 30-01-2016
вернет 02-03-2016
. (Добавление 31
дней)
Для моего случая мне нужно было получить 28-02-2016
, чтобы сохранить его в следующем месяце. В таких случаях вы можете использовать решение ниже.
Этот код будет определять, превышает ли день данной даты общее количество дней в следующем месяце. Если это так, он будет умело вычитать дни и вернет дату в пределах месяца.
Обратите внимание, что возвращаемое значение имеет формат отметки времени.
function getExactDateAfterMonths($timestamp, $months){
$day_current_date = date('d', $timestamp);
$first_date_of_current_month = date('01-m-Y', $timestamp);
// 't' gives last day of month, which is equal to no of days
$days_in_next_month = date('t', strtotime("+".$months." months", strtotime($first_date_of_current_month)));
$days_to_substract = 0;
if($day_current_date > $days_in_next_month)
$days_to_substract = $day_current_date - $days_in_next_month;
$php_date_after_months = strtotime("+".$months." months", $timestamp);
$exact_date_after_months = strtotime("-".$days_to_substract." days", $php_date_after_months);
return $exact_date_after_months;
}
getExactDateAfterMonths(strtotime('30-01-2016'), 1);
// $php_date_after_months => 02-03-2016
// $exact_date_after_months => 28-02-2016