Klassen DateInterval
Klassen DateInterval tillater arbeid med tidsperioder i PHP.
Den brukes til å lagre forskjellen mellom to datoer eller for å angi en periode
i metoder for datobehandling. Perioden opprettes i et spesialformat.
Syntaks
DateInterval::__construct(string $duration)
Periodens format
Formatet består av bokstaven P (period)
og elementer:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
I dette formatet: Y - år, M - måneder,
D - dager, T - tidsseparator,
H - timer, M - minutter, S - sekunder,
W - uker.
Foran disse bokstavene må man skrive den tilsvarende
verdien. For eksempel, 3Y vil bety
tre år, og 5Y2M vil bety
5 år og 2 måneder.
Etter opprettelse vil objektet DateInterval
inneholde følgende egenskaper:
<?php
$interval->y // år
$interval->m // måneder
$interval->d // dager
$interval->h // timer
$interval->i // minutter
$interval->s // sekunder
$interval->f // mikrosekunder
$interval->invert // 1 hvis perioden er negativ
$interval->days // antall dager (hvis opprettet via diff())
?>
La oss se på hvordan perioden fungerer med eksempler:
Eksempel
La oss opprette en periode på 1 time, 45 minutter og 30 sekunder:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Resultat av kjøring av koden:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Eksempel
La oss opprette en periode på 3 uker og 2 dager:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Resultat av kjøring av koden:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Eksempel
La oss opprette en periode på 5 måneder, 10 dager og 6 timer:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Resultat av kjøring av koden:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Eksempel
La oss opprette en periode på 2 år og 15 minutter:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Resultat av kjøring av koden:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Eksempel
La oss opprette en periode på 1 dag, 12 timer og 30 sekunder:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Resultat av kjøring av koden:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Eksempel
La oss opprette en negativ periode på 1 år og 3 måneder (periode bakover):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Resultat av kjøring av koden:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Eksempel
La oss opprette en negativ periode på 2 timer, 30 minutter (periode bakover):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Resultat av kjøring av koden:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Eksempel
La oss legge til en periode til nåværende dato:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Resultat av kjøring av koden:
'2023-01-11'
Eksempel
La oss beregne forskjellen mellom to datoer:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
Resultat av kjøring av koden:
'1 months 14 days'
Se også
-
klassen
DateTime,
som representerer dato og tid -
klassen
DateTimeZone,
som representerer tidssone