Klasa DateInterval
Klasa DateInterval lejon punën me intervale kohore në PHP.
Ajo përdoret për të ruajtur ndryshimin midis dy datave ose për të caktuar një interval
në metodat e punës me data. Intervali krijohet në një format të veçantë.
Sintaksa
DateInterval::__construct(string $duration)
Formati i intervalit
Formati përbëhet nga shkronja P (period)
dhe elementët:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
Në këtë format: Y - vitet, M - muajt,
D - ditët, T - ndarësi i kohës,
H - orët, M - minutat, S - sekondat,
W - javët.
Para këtyre shkronjave duhet shkruar vlera përkatëse.
Për shembull, 3Y do të thotë
tre vjet, ndërsa 5Y2M do të thotë
5 vjet dhe 2 muaj.
Pas krijimit, objekti DateInterval
do të përmbajë karakteristikat e mëposhtme:
<?php
$interval->y // vitet
$interval->m // muajt
$interval->d // ditët
$interval->h // orët
$interval->i // minutat
$interval->s // sekondat
$interval->f // mikrosekondat
$interval->invert // 1 nëse intervali është negativ
$interval->days // numri i ditëve (nëse është krijuar përmes diff())
?>
Le të shohim funksionimin e intervalit në shembuj:
Shembull
Le të krijojmë një interval prej 1 ore, 45 minutash dhe 30 sekondash:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Rezultati i ekzekutimit të kodit:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Shembull
Le të krijojmë një interval prej 3 javësh dhe 2 ditësh:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Rezultati i ekzekutimit të kodit:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Shembull
Le të krijojmë një interval prej 5 muajsh, 10 ditësh dhe 6 orësh:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Rezultati i ekzekutimit të kodit:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Shembull
Le të krijojmë një interval prej 2 vjetësh dhe 15 minutash:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Rezultati i ekzekutimit të kodit:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Shembull
Le të krijojmë një interval prej 1 dite, 12 orësh dhe 30 sekondash:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Rezultati i ekzekutimit të kodit:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Shembull
Le të krijojmë një interval negativ prej 1 viti dhe 3 muajsh (interval prapa):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Rezultati i ekzekutimit të kodit:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Shembull
Le të krijojmë një interval negativ prej 2 orësh, 30 minutash (interval prapa):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Rezultati i ekzekutimit të kodit:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Shembull
Le të shtojmë një interval në datën aktuale:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Rezultati i ekzekutimit të kodit:
'2023-01-11'
Shembull
Le të llogarisim ndryshimin midis dy datave:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
Rezultati i ekzekutimit të kodit:
'1 months 14 days'
Shihni gjithashtu
-
klasën
DateTime,
e cila përfaqëson datën dhe kohën -
klasën
DateTimeZone,
e cila përfaqëson zonën kohore