Klass DateInterval
Klassen DateInterval möjliggör arbete med tidsintervall i PHP.
Den används för att lagra skillnaden mellan två datum eller för att ange ett intervall
i metoder för datumhantering. Intervallet skapas i ett speciellt format.
Syntax
DateInterval::__construct(string $duration)
Intervallformat
Formatet består av bokstaven P (period)
och element:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
I detta format: Y - år, M - månader,
D - dagar, T - tidsavgränsare,
H - timmar, M - minuter, S - sekunder,
W - veckor.
Före dessa bokstäver måste motsvarande
värde skrivas. Till exempel kommer 3Y att betyda
tre år, och 5Y2M kommer att betyda
5 år och 2 månader.
Efter skapandet kommer objektet DateInterval
innehålla följande egenskaper:
<?php
$interval->y // år
$interval->m // månader
$interval->d // dagar
$interval->h // timmar
$interval->i // minuter
$interval->s // sekunder
$interval->f // mikrosekunder
$interval->invert // 1 om intervallet är negativt
$interval->days // antal dagar (om skapat via diff())
?>
Låt oss titta på hur intervallet fungerar med exempel:
Exempel
Låt oss skapa ett intervall på 1 timme, 45 minuter och 30 sekunder:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Resultat av kodkörning:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Exempel
Låt oss skapa ett intervall på 3 veckor och 2 dagar:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Resultat av kodkörning:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Exempel
Låt oss skapa ett intervall på 5 månader, 10 dagar och 6 timmar:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Resultat av kodkörning:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Exempel
Låt oss skapa ett intervall på 2 år och 15 minuter:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Resultat av kodkörning:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Exempel
Låt oss skapa ett intervall på 1 dag, 12 timmar och 30 sekunder:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Resultat av kodkörning:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Exempel
Låt oss skapa ett negativt intervall på 1 år och 3 månader (intervall bakåt):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Resultat av kodkörning:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Exempel
Låt oss skapa ett negativt intervall på 2 timmar, 30 minuter (intervall bakåt):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Resultat av kodkörning:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Exempel
Låt oss lägga till ett intervall till det aktuella datumet:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Resultat av kodkörning:
'2023-01-11'
Exempel
Låt oss beräkna skillnaden mellan två datum:
<?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 kodkörning:
'1 months 14 days'
Se även
-
klassen
DateTime,
som representerar datum och tid -
klassen
DateTimeZone,
som representerar en tidszon