Skip to content
Related Articles

Related Articles

How to calculate the difference between two dates in PHP?
  • Last Updated : 20 Sep, 2018

Given two dates, start_date and end_date. The task is to find the difference between two dates.

Examples:

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

Input: start_date: 2015-05-12 12:37:30 
       end_date: 2018-04-25 12:45:31
Output: 2 years, 11 months, 19 days, 0 hours, 8 minutes, 1 seconds

Method 1: Use date_diff() Function to find the difference between two dates.

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

Program:






<?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
  
// 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
My Personal Notes arrow_drop_up
Recommended Articles
Page :