Php get difference between two dates in months

I recently needed to calculate age in months ranging from prenatal to 5 years old (60+ months).

Neither of the answers above worked for me. The first one I tried, which is basically a 1 liner for deceze's answer

$bdate = strtotime('2011-11-04'); 
$edate = strtotime('2011-12-03');
$age = ((date('Y',$edate) - date('Y',$bdate)) * 12) + (date('m',$edate) - date('m',$bdate));
. . .

This fails with the set dates, obviously the answer should be 0 as the month mark (2011-12-04) hasn't been reached yet, how ever the code returns 1.

The second method I tried, using Adam's code

$bdate = strtotime('2011-01-03'); 
$edate = strtotime('2011-02-03');
$age = 0;

while (strtotime('+1 MONTH', $bdate) < $edate) {
    $age++;
    $bdate = strtotime('+1 MONTH', $bdate);
}
. . .

This fails and says 0 months, when it should be 1.

What did work for me, is a little expansion of this code. What I used is the following:

$bdate = strtotime('2011-11-04');
$edate = strtotime('2012-01-04');
$age = 0;

if($edate < $bdate) {
    //prenatal
    $age = -1;
} else {
    //born, count months.
    while($bdate < $edate) {
        $age++;
        $bdate = strtotime('+1 MONTH', $bdate);
        if ($bdate > $edate) {
            $age--;
        }
    }
}

In this article, we will see how to calculate the difference between 2 dates in PHP, along with understanding its implementation through the examples. Given two dates ie., start_date and end_date & we need to find the difference between the two dates.

Consider the below example:

Input: start_date: 2016-06-01 22:45:00 
       end_date: 2018-09-21 10:44:01
Output: 2 years, 3 months, 21 days, 11 hours, 59 minutes, 1 seconds
Explanation: The difference of 2 dates will give the date in complete format.

Method 1: Using date_diff() Function

This function is used to find the difference between two dates. This function will return a DateInterval object on the success and returns FALSE on failure.

Example: This example illustrates the use of the date_diff() function to calculate the difference between the 2 dates.

PHP

  $datetime1 = date_create('2016-06-01');

  $datetime2 = date_create('2018-09-21');

  $interval = date_diff($datetime1, $datetime2);

  echo $interval->format('%R%y years %m months');

?>

Output:

+2 years 3 months

Method 2: To use the date-time mathematical formula to find the difference between two dates. It returns the years, months, days, hours, minutes, seconds between two specified dates.

Example: In this example, we will be using the date-time mathematical formula to calculate the difference between the dates that will be returned in years, months, days, hours, minutes, seconds.

PHP

  $date1 = strtotime("2016-06-01 22:45:00");

  $date2 = strtotime("2018-09-21 10:44:01");

  $diff = abs($date2 - $date1);

  $years = floor($diff / (365*60*60*24));

  $months = floor(($diff - $years * 365*60*60*24)

                                 / (30*60*60*24));

  $days = floor(($diff - $years * 365*60*60*24 -

               $months*30*60*60*24)/ (60*60*24));

  $hours = floor(($diff - $years * 365*60*60*24

         - $months*30*60*60*24 - $days*60*60*24)

                                     / (60*60));

  $minutes = floor(($diff - $years * 365*60*60*24

           - $months*30*60*60*24 - $days*60*60*24

                            - $hours*60*60)/ 60);

  $seconds = floor(($diff - $years * 365*60*60*24

           - $months*30*60*60*24 - $days*60*60*24

                  - $hours*60*60 - $minutes*60));

  printf("%d years, %d months, %d days, %d hours, "

       . "%d minutes, %d seconds", $years, $months,

               $days, $hours, $minutes, $seconds);

?>

Output:

2 years, 3 months, 21 days, 11 hours, 59 minutes, 1 seconds

Method 3: This method is used to get the total number of days between two specified dates.

PHP

  $start_date = strtotime("2018-06-08");

  $end_date = strtotime("2018-09-19");

  echo "Difference between two dates: "

      . ($end_date - $start_date)/60/60/24;

?>

Output:

Difference between two dates: 103

PHP is a server-side scripting language designed specifically for web development. You can learn PHP from the ground up by following this PHP Tutorial and PHP Examples.


How can I get the number of months between two dates in PHP?

“find how many months between two dates php” Code Answer.
$d1 = new DateTime("2018-01-10 00:00:00");.
$d2 = new DateTime("2019-05-18 01:23:45");.
$interval = $d1->diff($d2);.
$diffInSeconds = $interval->s; //45..
$diffInMinutes = $interval->i; //23..
$diffInHours = $interval->h; //8..
$diffInDays = $interval->d; //21..

How can I get the difference between two dates in PHP?

To calculate the difference between two dates in PHP, call date_diff() date/time function, and pass the two dates as argument to it. date_diff() function returns a DateInterval object, or FALSE if calculating the difference is not successful.

How do you find the difference between two dates?

Use the DATEDIF function when you want to calculate the difference between two dates. First put a start date in a cell, and an end date in another..
Use DATEDIF to find the total years. ... .
Use DATEDIF again with “ym” to find months. ... .
Use a different formula to find days..

How get number of days in a month in PHP?

The cal_days_in_month() function returns the number of days in a month for a specified year and calendar.