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
<?phpÂ
  // Creates DateTime objects  $datetime1 = date_create('2016-06-01');  $datetime2 = date_create('2018-09-21');Â
  // Calculates the difference between DateTime objects  $interval = date_diff($datetime1, $datetime2);Â
  // Printing result in years & months format  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
<?phpÂ
  // Declare and define two dates  $date1 = strtotime("2016-06-01 22:45:00");   $date2 = strtotime("2018-09-21 10:44:01"); Â
  // Formulate the Difference between two dates  $diff = abs($date2 - $date1); Â
  // To get the year divide the resultant date into  // total seconds in a year (365*60*60*24)  $years = floor($diff / (365*60*60*24)); Â
  // To get the month, subtract it with years and  // divide the resultant date into  // total seconds in a month (30*60*60*24)  $months = floor(($diff - $years * 365*60*60*24)                                 / (30*60*60*24)); Â
  // To get the day, subtract it with years and   // months and divide the resultant date into  // total seconds in a days (60*60*24)  $days = floor(($diff - $years * 365*60*60*24 -                $months*30*60*60*24)/ (60*60*24));Â
  // To get the hour, subtract it with years,   // months & seconds and divide the resultant  // date into total seconds in a hours (60*60)  $hours = floor(($diff - $years * 365*60*60*24          - $months*30*60*60*24 - $days*60*60*24)                                     / (60*60)); Â
  // To get the minutes, subtract it with years,  // months, seconds and hours and divide the   // resultant date into total seconds i.e. 60  $minutes = floor(($diff - $years * 365*60*60*24            - $months*30*60*60*24 - $days*60*60*24                             - $hours*60*60)/ 60); Â
  // To get the minutes, subtract it with years,  // months, seconds, hours and minutes   $seconds = floor(($diff - $years * 365*60*60*24            - $months*30*60*60*24 - $days*60*60*24                  - $hours*60*60 - $minutes*60)); Â
  // Print the result  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
<?phpÂ
  // Declare two dates  $start_date = strtotime("2018-06-08");  $end_date = strtotime("2018-09-19");Â
  // Get the difference and divide into   // total no. seconds 60/60/24 to get   // number of days  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.
