Die Klasse DateInterval
Die Klasse DateInterval ermöglicht die Arbeit mit Zeitintervallen in PHP.
Sie wird verwendet, um die Differenz zwischen zwei Datumsangaben zu speichern oder um ein Intervall
in Methoden der Datumsarbeit festzulegen. Das Intervall wird in einem speziellen Format erstellt.
Syntax
DateInterval::__construct(string $duration)
Intervallformat
Das Format besteht aus dem Buchstaben P (Period)
und den Elementen:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
In diesem Format: Y - Jahre, M - Monate,
D - Tage, T - Zeit-Trennzeichen,
H - Stunden, M - Minuten, S - Sekunden,
W - Wochen.
Vor diesen Buchstaben muss der entsprechende
Wert geschrieben werden. Zum Beispiel bedeutet 3Y
drei Jahre, und 5Y2M bedeutet
5 Jahre und 2 Monate.
Nach der Erstellung enthält das Objekt DateInterval
die folgenden Eigenschaften:
<?php
$interval->y // Jahre
$interval->m // Monate
$interval->d // Tage
$interval->h // Stunden
$interval->i // Minuten
$interval->s // Sekunden
$interval->f // Mikrosekunden
$interval->invert // 1, wenn das Intervall negativ ist
$interval->days // Anzahl der Tage (wenn es mit diff() erstellt wurde)
?>
Sehen wir uns die Funktionsweise des Intervalls an Beispielen an:
Beispiel
Erstellen wir ein Intervall von 1 Stunde, 45 Minuten und 30 Sekunden:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Ergebnis der Codeausführung:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Beispiel
Erstellen wir ein Intervall von 3 Wochen und 2 Tagen:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Ergebnis der Codeausführung:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Beispiel
Erstellen wir ein Intervall von 5 Monaten, 10 Tagen und 6 Stunden:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Ergebnis der Codeausführung:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Beispiel
Erstellen wir ein Intervall von 2 Jahren und 15 Minuten:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Ergebnis der Codeausführung:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Beispiel
Erstellen wir ein Intervall von 1 Tag, 12 Stunden und 30 Sekunden:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Ergebnis der Codeausführung:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Beispiel
Erstellen wir ein negatives Intervall von 1 Jahr und 3 Monaten (Intervall rückwärts):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Ergebnis der Codeausführung:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Beispiel
Erstellen wir ein negatives Intervall von 2 Stunden, 30 Minuten (Intervall rückwärts):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Ergebnis der Codeausführung:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Beispiel
Fügen wir ein Intervall zum aktuellen Datum hinzu:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Ergebnis der Codeausführung:
'2023-01-11'
Beispiel
Berechnen wir die Differenz zwischen zwei Datumsangaben:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m Monate %d Tage');
?>
Ergebnis der Codeausführung:
'1 Monate 14 Tage'
Siehe auch
-
die Klasse
DateTime,
die ein Datum und eine Uhrzeit repräsentiert -
die Klasse
DateTimeZone,
die eine Zeitzone repräsentiert