Klasse DateInterval
De klasse DateInterval maakt het mogelijk om met tijdsintervallen in PHP te werken.
Het wordt gebruikt om het verschil tussen twee datums op te slaan of om een interval in te stellen
in methoden voor het werken met datums. Het interval wordt gemaakt in een speciaal formaat.
Syntaxis
DateInterval::__construct(string $duration)
Intervalformaat
Het formaat bestaat uit de letter P (period)
en elementen:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
In dit formaat: Y - jaren, M - maanden,
D - dagen, T - tijdsscheider,
H - uren, M - minuten, S - seconden,
W - weken.
Voor deze letters moet je de bijbehorende
waarde schrijven. Bijvoorbeeld, 3Y betekent
drie jaar, en 5Y2M betekent
5 jaar en 2 maanden.
Na het aanmaken bevat het object DateInterval
de volgende eigenschappen:
<?php
$interval->y // jaren
$interval->m // maanden
$interval->d // dagen
$interval->h // uren
$interval->i // minuten
$interval->s // seconden
$interval->f // microseconden
$interval->invert // 1 als het interval negatief is
$interval->days // aantal dagen (als gemaakt via diff())
?>
Laten we de werking van het interval bekijken aan de hand van voorbeelden:
Voorbeeld
Laten we een interval maken van 1 uur, 45 minuten en 30 seconden:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Resultaat van de code-uitvoering:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Voorbeeld
Laten we een interval maken van 3 weken en 2 dagen:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Resultaat van de code-uitvoering:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Voorbeeld
Laten we een interval maken van 5 maanden, 10 dagen en 6 uur:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Resultaat van de code-uitvoering:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Voorbeeld
Laten we een interval maken van 2 jaar en 15 minuten:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Resultaat van de code-uitvoering:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Voorbeeld
Laten we een interval maken van 1 dag, 12 uur en 30 seconden:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Resultaat van de code-uitvoering:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Voorbeeld
Laten we een negatief interval maken van 1 jaar en 3 maanden (interval achteruit):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Resultaat van de code-uitvoering:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Voorbeeld
Laten we een negatief interval maken van 2 uur, 30 minuten (interval achteruit):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Resultaat van de code-uitvoering:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Voorbeeld
Laten we een interval toevoegen aan de huidige datum:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Resultaat van de code-uitvoering:
'2023-01-11'
Voorbeeld
Laten we het verschil tussen twee datums berekenen:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m maanden %d dagen');
?>
Resultaat van de code-uitvoering:
'1 maanden 14 dagen'
Zie ook
-
klas
DateTime,
die een datum en tijd vertegenwoordigt -
klas
DateTimeZone,
die een tijdzone vertegenwoordigt