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
$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
<?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
<?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.