Kelas DateInterval
Kelas DateInterval membolehkan bekerja dengan selang masa dalam PHP.
Ia digunakan untuk menyimpan perbezaan antara dua tarikh atau untuk menetapkan selang
dalam kaedah bekerja dengan tarikh. Selang dicipta dalam format khas.
Sintaks
DateInterval::__construct(string $duration)
Format Selang
Format terdiri daripada huruf P (period)
dan elemen:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
Dalam format ini: Y - tahun, M - bulan,
D - hari, T - pemisah masa,
H - jam, M - minit, S - saat,
W - minggu.
Sebelum huruf-huruf ini perlu ditulis nilai yang
sepadan. Contohnya, 3Y akan bermaksud
tiga tahun, dan 5Y2M akan menandakan
5 tahun dan 2 bulan.
Selepas penciptaan objek DateInterval
akan mengandungi sifat-sifat berikut:
<?php
$interval->y // tahun
$interval->m // bulan
$interval->d // hari
$interval->h // jam
$interval->i // minit
$interval->s // saat
$interval->f // mikrosaat
$interval->invert // 1 jika selang negatif
$interval->days // bilangan hari (jika dicipta melalui diff())
?>
Mari kita lihat kerja selang pada contoh:
Contoh
Cipta selang selama 1 jam, 45 minit dan 30 saat:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Keputusan pelaksanaan kod:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Contoh
Cipta selang selama 3 minggu dan 2 hari:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Keputusan pelaksanaan kod:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Contoh
Cipta selang selama 5 bulan, 10 hari dan 6 jam:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Keputusan pelaksanaan kod:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Contoh
Cipta selang selama 2 tahun dan 15 minit:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Keputusan pelaksanaan kod:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Contoh
Cipta selang selama 1 hari, 12 jam dan 30 saat:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Keputusan pelaksanaan kod:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Contoh
Cipta selang negatif selama 1 tahun dan 3 bulan (selang ke belakang):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Keputusan pelaksanaan kod:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Contoh
Cipta selang negatif selama 2 jam, 30 minit (selang ke belakang):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Keputusan pelaksanaan kod:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Contoh
Tambahkan selang kepada tarikh semasa:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Keputusan pelaksanaan kod:
'2023-01-11'
Contoh
Kira perbezaan antara dua tarikh:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
Keputusan pelaksanaan kod:
'1 months 14 days'
Lihat juga
-
kelas
DateTime,
yang mewakili tarikh dan masa -
kelas
DateTimeZone,
yang mewakili zon masa