CakeFest 2024: The Official CakePHP Conference

DateTimeInterface::diff

DateTimeImmutable::diff

DateTime::diff

date_diff

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTimeInterface::diff -- DateTimeImmutable::diff -- DateTime::diff -- date_diffLiefert die Differenz zwischen zwei DateTime-Objekten

Beschreibung

Objektorientierter Stil

public DateTimeInterface::diff(DateTimeInterface $targetObject, bool $absolute = false): DateInterval
public DateTimeImmutable::diff(DateTimeInterface $targetObject, bool $absolute = false): DateInterval
public DateTime::diff(DateTimeInterface $targetObject, bool $absolute = false): DateInterval

Prozeduraler Stil

date_diff(DateTimeInterface $baseObject, DateTimeInterface $targetObject, bool $absolute = false): DateInterval

Gibt die Differenz zwischen zwei DateTimeInterface-Objekten zurück.

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

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");
$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:

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");
$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:

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)

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.
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top