(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateTime::diff -- DateTimeImmutable::diff -- DateTimeInterface::diff -- date_diff — Returns the difference between two DateTime objects
Object-oriented style
$targetObject, bool $absolute = false): DateInterval$targetObject, bool $absolute = false): DateIntervalProcedural style
$baseObject, DateTimeInterface $targetObject, bool $absolute = false): DateIntervalReturns the difference between two DateTimeInterface objects.
datetimeThe date to compare to.
absoluteShould the interval be forced to be positive?
   The DateInterval object represents the
   difference between the two dates or false on failure.
  
   The return value more specifically represents the interval to apply to the
   original object ($this or
   $originObject) to arrive at the
   $targetObject. This process is not always
   reversible.
  
Example #1 DateTime::diff() example
Object-oriented style
<?php
$origin = new DateTime('2009-10-11');
$target = new DateTime('2009-10-13');
$interval = $origin->diff($target);
echo $interval->format('%R%a days');
?>
Procedural style
<?php
$origin = date_create('2009-10-11');
$target = date_create('2009-10-13');
$interval = date_diff($origin, $target);
echo $interval->format('%R%a days');
?>
The above examples will output:
+2 days
Example #2 DateTime object comparison
Note:
DateTime objects can be compared using comparison operators.
<?php
$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");
var_dump($date1 == $date2);
var_dump($date1 < $date2);
var_dump($date1 > $date2);
?>
The above example will output:
bool(false) bool(true) bool(false)