Razred DateInterval
Razred DateInterval omogoča delo s časovnimi intervali v PHP.
Uporablja se za shranjevanje razlike med dvema datumoma ali za določanje intervala
v metodah za delo z datumi. Interval se ustvari v posebnem formatu.
Sintaksa
DateInterval::__construct(string $duration)
Format intervala
Format je sestavljen iz črke P (period)
in elementov:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
V tem formatu: Y - leta, M - meseci,
D - dnevi, T - ločilo časa,
H - ure, M - minute, S - sekunde,
W - tedni.
Pred temi črkami je treba napisati ustrezno
vrednost. Na primer, 3Y bo pomenilo
tri leta, 5Y2M pa bo označeval
5 let in 2 meseca.
Po ustvarjanju bo objekt DateInterval
vseboval naslednje lastnosti:
<?php
$interval->y // leta
$interval->m // meseci
$interval->d // dnevi
$interval->h // ure
$interval->i // minute
$interval->s // sekunde
$interval->f // mikrosekunde
$interval->invert // 1 če je interval negativen
$interval->days // število dni (če je ustvarjeno prek diff())
?>
Poglejmo si delovanje intervala na primerih:
Primer
Ustvarimo interval v 1 uro, 45 minut in 30 sekund:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Rezultat izvajanja kode:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Primer
Ustvarimo interval v 3 tedne in 2 dni:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Rezultat izvajanja kode:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Primer
Ustvarimo interval v 5 mesecev, 10 dni in 6 ur:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Rezultat izvajanja kode:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Primer
Ustvarimo interval v 2 leti in 15 minut:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Rezultat izvajanja kode:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Primer
Ustvarimo interval v 1 dan, 12 ur in 30 sekund:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Rezultat izvajanja kode:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Primer
Ustvarimo negativen interval v 1 leto in 3 mesece (interval nazaj):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Rezultat izvajanja kode:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Primer
Ustvarimo negativen interval v 2 uri, 30 minut (interval nazaj):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Rezultat izvajanja kode:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Primer
Dodajmo interval trenutnemu datumu:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Rezultat izvajanja kode:
'2023-01-11'
Primer
Izračunajmo razliko med dvema datumoma:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
Rezultat izvajanja kode:
'1 months 14 days'
Glejte tudi
-
razred
DateTime,
ki predstavlja datum in čas -
razred
DateTimeZone,
ki predstavlja časovni pas