DateTimeInterface::diff
DateTimeImmutable::diff
DateTime::diff
date_diff
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateTimeInterface::diff -- DateTimeImmutable::diff -- DateTime::diff -- date_diff — Liefert die Differenz zwischen zwei DateTime-Objekten
Beschreibung
Objektorientierter Stil
Parameter-Liste
datetime
-
Das Datum, mit dem verglichen werden soll.
absolute
-
Soll das Intervall zwingend positiv sein?
Rückgabewerte
Das DateInterval-Objekt stellt die Differenz
zwischen den beiden Daten dar.
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.
Beispiele
Beispiel #1 DateTimeImmutable::diff()-Beispiel
<?php
$origin = new DateTimeImmutable('2009-10-11');
$target = new DateTimeImmutable('2009-10-13');
$interval = $origin->diff($target);
echo $interval->format('%R%a Tage');
?>
<?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:
Beispiel #2 DateTimeInterface::diff() während der Zeitumstellung
<?php
$originalTime = new DateTimeImmutable("2021-10-30 09:00:00 Europe/London");
$targedTime = new DateTimeImmutable("2021-10-31 08:30:00 Europe/London");
$interval = $originalTime->diff($targedTime);
echo $interval->format("%H:%I:%S (Full days: %a)"), "\n";
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
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");
$targedTime = new DateTimeImmutable("2023-12-31 UTC");
$interval = $originalTime->diff($targedTime);
echo "Full days: ", $interval->format("%a"), "\n";
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
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)
Siehe auch
- DateInterval::format() - Formatiert ein Intervall
- DateTime::add() - Ändert ein DateTime-Objekt, wobei die Anzahl der Tage, Monate, Jahre,
Stunden, Minuten und Sekunden hinzugefügt wird
- DateTime::sub() - Subtrahiert eine Anzahl von Tagen, Monaten, Jahren, Stunden, Minuten und
Sekunden von einem DateTime-Objekt.