PHP – Как подсчитать, сколько месяцев с определенной даты

Как я могу подсчитать количество месяцев из следующих двух дат ниже, используя метод процедурного стиля?

PHP-код.

$delete_date = "2000-01-12 08:02:39"; $current_date = date('Ymd H:i:s'); //current date 

Solutions Collecting From Web of "PHP – Как подсчитать, сколько месяцев с определенной даты"

Вы ищете DateTime :: diff ?

 $delete_date = "2000-01-12 08:02:39"; $date_format = 'Ymd H:i:s'; $current_date = date($date_format); $diff = date_diff(date_create_from_format($date_format, $delete_date), date_create()); $months = $diff->m; 

Что-то вроде этого.

Используя DateTime, вы получите следующие месяцы следующим образом:

 $d1 = new DateTime("2000-01-12 08:02:39"); $d2 = new DateTime(); $d3 = $d1->diff($d2); $months = ($d3->y*12)+$d3->m; 

Вам все равно придется обрабатывать оставшиеся дни $d3->d … но это зависит от ваших потребностей.

это то, что вы ищете?

Как рассчитать разницу между двумя датами с помощью PHP?

 $delete_date = "2000-01-12 08:02:39"; $current_date = date('Ymd H:i:s'); //current date $diff = strtotime($current_date) - strtotime($delete_date); $months = floor(floatval($diff) / (60 * 60 * 24 * 365 / 12)); echo $months . "\n"; 

это то, что вы ищете?

 $delete_date = "2000-01-12 08:02:39"; $current_date = date('Ymd H:i:s'); //current date // convert date to int $delete_date = strtotime($delete_date); $current_date = strtotime($current_date); // calculate it $diff = $delete_date - $current_date; // convert int to time $conv_diff = date('format', $diff); 

Попробуйте это, это легко, возможно, не энох цыпленок, но очень эффективный.

 function calculateMonthsBetweenDates($fMonth, $fDay, $fYear, $tMonth, $tDay, $tYear) { //Build datetime vars using month, day and year $dateFrom = mktime(0, 0, 0, $fMonth, $fDay, $fYear); $dateTo = mktime(0, 0, 0, $tMonth, $tDay, $tYear); //Check dateTo is a later date than dateFrom. if($dateFrom<=$dateTo){ $yearF = date("Y", $dateFrom); $yearT = date("Y", $dateTo); $monthF = date("m", $dateFrom); $monthT = date("m", $dateTo); //same year if ($yearF == $yearT) $months = ($monthT - $monthF); else{ //different year $months = (12*($yearT-$yearF)-$monthF) + $monthT; } return $months; } else return false; //or -1 }