DateInterval osztály
A DateInterval osztály lehetővé teszi időintervallumok kezelését PHP-ban.
Két dátum közötti különbség tárolására vagy intervallum megadására szolgál
dátumkezelő metódusokban. Az intervallum egy speciális formátumban jön létre.
Szintaxis
DateInterval::__construct(string $duration)
Az intervallum formátuma
A formátum a P (period) betűből
és az alábbi elemekből áll:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
Ebben a formátumban: Y - évek, M - hónapok,
D - napok, T - idő elválasztó,
H - órák, M - percek, S - másodpercek,
W - hetek.
E betűk elé kell írni a megfelelő
értéket. Például a 3Y három
évet jelent, a 5Y2M pedig
5 évet és 2 hónapot.
Létrehozás után a DateInterval
objektum a következő tulajdonságokat fogja tartalmazni:
<?php
$interval->y // évek
$interval->m // hónapok
$interval->d // napok
$interval->h // órák
$interval->i // percek
$interval->s // másodpercek
$interval->f // mikroszekundumok
$interval->invert // 1 ha az intervallum negatív
$interval->days // napok száma (ha diff()-fel lett létrehozva)
?>
Nézzük meg az intervallum működését példákon:
Példa
Hozzunk létre egy intervallumot 1 óra, 45 perc és 30 másodperc:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
A kód végrehajtásának eredménye:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Példa
Hozzunk létre egy intervallumot 3 hét és 2 nap:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
A kód végrehajtásának eredménye:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Példa
Hozzunk létre egy intervallumot 5 hónap, 10 nap és 6 óra:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
A kód végrehajtásának eredménye:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Példa
Hozzunk létre egy intervallumot 2 év és 15 perc:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
A kód végrehajtásának eredménye:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Példa
Hozzunk létre egy intervallumot 1 nap, 12 óra és 30 másodperc:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
A kód végrehajtásának eredménye:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Példa
Hozzunk létre egy negatív intervallumot 1 év és 3 hónap (intervallum visszafelé):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
A kód végrehajtásának eredménye:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Példa
Hozzunk létre egy negatív intervallumot 2 óra, 30 perc (intervallum visszafelé):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
A kód végrehajtásának eredménye:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Példa
Adjunk hozzá egy intervallumot a jelenlegi dátumhoz:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
A kód végrehajtásának eredménye:
'2023-01-11'
Példa
Számítsuk ki két dátum közötti különbséget:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m hónap %d nap');
?>
A kód végrehajtásának eredménye:
'1 hónap 14 nap'
Lásd még
-
a
DateTimeosztály,
amely dátumot és időt reprezentál -
a
DateTimeZoneosztály,
amely időzónát reprezentál