DateInterval::__construct

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

DateInterval::__constructErstellt ein neues DateInterval-Objekt

Beschreibung

publicDateInterval::__construct(string$duration)

Erstellt ein neues DateInterval-Objekt.

Parameter-Liste

duration

Eine Intervall-Spezifikation

Das Format beginnt mit dem Buchstaben P für period. Jede Periodendauer wird als Integer-Wert, gefolgt von einem Perioden-Bezeichner, repräsentiert. Enthält die Dauer Zeitelemente, wird diesem Teil der Spezifikation der Buchstabe T vorangestellt.

Perioden-Bezeichner für duration
Perioden-BezeichnerBeschreibung
YJahre
MMonate
DTage
W Wochen. Diese werden in Tage umgerechnet. Vor PHP 8.0.0 konnte es nicht mit D kombiniert werden.
HStunden
MMinuten
SSekunden

Hier sind ein paar einfache Beispiele: Zwei Tage entsprechen P2D. Zwei Sekunden entsprechen PT2S. Sechs Jahre und fünf Minuten entsprechen P6YT5M.

Hinweis:

Die Einheitstypen müssen von der größten Einheit links bis zur kleinsten Einheit rechts angegeben werden. Also Jahre vor Monaten, Monate vor Tagen, Tage vor Minuten etc. Also muss ein Jahr und vier Tage als P1Y4D dargestellt werden, nicht als P4D1Y.

Die Spezifikation kann aber auch als Zeitstempel angegeben werden. Ein Beispiel für ein Jahr und vier Tage wäre also P0001-00-04T00:00:00. Die Werte in diesem Format können allerdings den jeweiligen Übersprungspunkt der Periode nicht überschreiten (z. B. ist 25 Stunden ungültig).

Diese Formate basieren auf der » ISO 8601-Spezifikation für die Dauer.

Fehler/Exceptions

Wenn duration nicht als Intervall geparst werden kann, wird eine DateMalformedIntervalStringException geworfen. Vor PHP 8.3 wird eine Exception geworfen.

Changelog

VersionBeschreibung
8.3.0 Wirft nun eine DateMalformedIntervalStringException anstelle von Exception.
8.2.0 Nur die Eigenschaften y bis f, invert und days sowie die neue boolesche Eigenschaft from_string sind sichtbar.
8.0.0W kann mit D kombiniert werden.

Beispiele

Beispiel #1 Erstellen und Verwenden von DateInterval-Objekten

<?php
// Ein konkretes Datum erstellen
$someDate = \DateTime::createFromFormat("Y-m-d H:i", "2022-08-25 14:18");

// Ein Intervall erstellen
$interval = new \DateInterval("P7D");

// Das Intervall hinzufügen
$someDate->add($interval);

// Das Intervall in eine Zeichenkette umwandeln
echo $interval->format("%d");

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:


7

Beispiel #2 DateInterval-Beispiel

<?php

$interval
= new DateInterval('P1W2D');
var_dump($interval);

?>

Das oben gezeigte Beispiel erzeugt mit PHP 8.2 folgende Ausgabe:

object(DateInterval)#1 (10) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(9) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["invert"]=> int(0) ["days"]=> bool(false) ["from_string"]=> bool(false) }

Das oben gezeigte Beispiel erzeugt mit PHP 8 folgende Ausgabe:

object(DateInterval)#1 (16) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(9) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) }

Das oben gezeigte Beispiel erzeugt mit PHP 7 folgende Ausgabe:

object(DateInterval)#1 (16) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(2) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) }

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.
  • DateTime::diff() - Liefert die Differenz zwischen zwei DateTime-Objekten
To Top