(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateTimeInterface::diff -- DateTimeImmutable::diff -- DateTime::diff -- date_diff — Liefert die Differenz zwischen zwei DateTime-Objekten
Objektorientierter Stil
$targetObject, bool $absolute = false): DateInterval$targetObject, bool $absolute = false): DateIntervalProzeduraler Stil
$baseObject, DateTimeInterface $targetObject, bool $absolute = false): DateIntervalGibt die Differenz zwischen zwei DateTimeInterface-Objekten zurück.
datetimeDas Datum, mit dem verglichen werden soll.
absoluteSoll das Intervall zwingend positiv sein?
Das DateInterval-Objekt stellt die Differenz zwischen den beiden Daten dar.
   Der Parameter absolute wirkt sich nur auf die
   Eigenschaft invert des
   DateInterval-Objekts aus.
  
   Genauer gesagt stellt der Rückgabewert das Zeitintervall dar, das auf das
   ursprüngliche Objekt ($this oder
   $originObject) anzuwenden ist, um das
   $targetObject zu erhalten. Dieser Prozess ist nicht
   immer umkehrbar.
  
   Die Methode berücksichtigt die Zeitumstellung und kann daher ein Intervall
   von 24 Stunden und 30 Minuten zurückgeben, wie in einem
   der Beispiele. Wenn mit absoluter Zeit gerechnet werden soll, müssen die
   beiden Parameter
   $this/$baseObject und
   $targetObject zuerst in UTC umgewandelt werden.
  
Beispiel #1 DateTimeImmutable::diff()-Beispiel
Objektorientierter Stil
<?php
$origin = new DateTimeImmutable('2009-10-11');
$target = new DateTimeImmutable('2009-10-13');
$interval = $origin->diff($target);
echo $interval->format('%R%a Tage');
?>Prozeduraler Stil
<?php
$origin = date_create('2009-10-11');
$target = date_create('2009-10-13');
$interval = date_diff($origin, $target);
echo $interval->format('%R%a Tage');
?>Die obigen Bespiele erzeugen folgende Ausgabe:
+2 Tage
Beispiel #2 DateTimeInterface::diff() während der Zeitumstellung
<?php
$originalTime = new DateTimeImmutable("2021-10-30 09:00:00 Europe/London");
$targetTime = new DateTimeImmutable("2021-10-31 08:30:00 Europe/London");
$interval = $originalTime->diff($targetTime);
echo $interval->format("%H:%I:%S (Full days: %a)"), "\n";
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
24:30:00 (Full days: 0)
Beispiel #3 Zeitspanne von DateTimeInterface::diff()
    Der Wert, den die Methode zurückgibt, ist die genaue Zeitspanne zwischen
    $this und $targetObject. Der
    Vergleich zwischen dem 1. Januar und dem 31. Dezember ergibt also 364 Tage
    und nicht 365 (in einem Nicht-Schaltjahr).
   
<?php
$originalTime = new DateTimeImmutable("2023-01-01 UTC");
$targetTime = new DateTimeImmutable("2023-12-31 UTC");
$interval = $originalTime->diff($targetTime);
echo "Full days: ", $interval->format("%a"), "\n";
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Full days: 364
Beispiel #4 Vergleich von DateTime-Objekten
Hinweis:
DateTimeImmutable- und DateTime-Objekte können mit Vergleichs-Operatoren verglichen werden.
<?php
$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");
var_dump($date1 == $date2);
var_dump($date1 < $date2);
var_dump($date1 > $date2);
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
bool(false) bool(true) bool(false)
