How to Calculate the Difference Between two Dates in PHP?

Calculating the difference between two dates is a common requirement in PHP applications. PHP provides several approaches to achieve this, from simple mathematical calculations to object-oriented methods using the DateTime class.

Using date_diff() Function

The date_diff() function calculates the difference between two DateTime objects and returns a DateInterval object representing the time difference

<?php
// Create DateTime objects
$datetime1 = date_create('2017-05-29');
$datetime2 = date_create('2023-06-20');

// Calculate the difference between DateTime objects
$interval = date_diff($datetime1, $datetime2);

// Print result in years & months format
echo $interval->format('%R%y years %m months');
?>
+6 years 0 months

Using Mathematical Formula with Timestamps

This approach converts dates to Unix timestamps and uses mathematical calculations to determine the difference in years, months, days, hours, minutes, and seconds

<?php
// Declare and define two dates
$date1 = strtotime("2020-06-01 18:36:20");
$date2 = strtotime("2023-11-23 8:25:35");

// Calculate the absolute difference
$diff = abs($date2 - $date1);

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

// Calculate months
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));

// Calculate days
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24) / (60*60*24));

// Calculate hours
$hours = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24) / (60*60));

// Calculate minutes
$minutes = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60) / 60);

// Calculate seconds
$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);
?>
3 years, 5 months, 24 days, 14 hours, 49 minutes, 15 seconds

Simple Day Difference Calculation

For basic day difference calculations, you can use a simple mathematical approach

<?php
// Declare two dates
$start_date = strtotime("2016-02-28");
$end_date = strtotime("2023-06-19");

// Calculate difference in days
$days_difference = ($end_date - $start_date) / 60 / 60 / 24;

echo "Difference between two dates: " . $days_difference . " days";
?>
Difference between two dates: 2668 days

Comparison

Method Accuracy Leap Year Handling Output Format
date_diff() High Yes Flexible formatting
Mathematical Formula Approximate No Custom calculation
Simple Timestamp Basic No Days only

Conclusion

For accurate date calculations, use date_diff() with DateTime objects as it properly handles leap years and varying month lengths. The mathematical approach works for approximate calculations, while simple timestamp subtraction is suitable for basic day differences.

Updated on: 2026-03-15T10:27:13+05:30

10K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements