Lớp DateInterval
Lớp DateInterval cho phép làm việc với các khoảng thời gian trong PHP.
Nó được sử dụng để lưu trữ sự khác biệt giữa hai ngày hoặc để chỉ định một khoảng thời gian
trong các phương thức làm việc với ngày tháng. Khoảng thời gian được tạo ra trong một định dạng đặc biệt.
Cú pháp
DateInterval::__construct(string $duration)
Định dạng khoảng thời gian
Định dạng bao gồm chữ cái P (period - chu kỳ)
và các phần tử:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
Trong định dạng này: Y - năm, M - tháng,
D - ngày, T - dấu phân cách thời gian,
H - giờ, M - phút, S - giây,
W - tuần.
Cần viết giá trị tương ứng
trước các chữ cái này. Ví dụ, 3Y sẽ có nghĩa là
ba năm, còn 5Y2M sẽ biểu thị
5 năm và 2 tháng.
Sau khi tạo, đối tượng DateInterval
sẽ chứa các thuộc tính sau:
<?php
$interval->y // năm
$interval->m // tháng
$interval->d // ngày
$interval->h // giờ
$interval->i // phút
$interval->s // giây
$interval->f // micro giây
$interval->invert // 1 nếu khoảng thời gian là âm
$interval->days // số ngày (nếu được tạo thông qua diff())
?>
Hãy xem cách hoạt động của khoảng thời gian qua các ví dụ:
Ví dụ
Tạo một khoảng thời gian 1 giờ, 45 phút và 30 giây:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Kết quả thực thi mã:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Ví dụ
Tạo một khoảng thời gian 3 tuần và 2 ngày:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Kết quả thực thi mã:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Ví dụ
Tạo một khoảng thời gian 5 tháng, 10 ngày và 6 giờ:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Kết quả thực thi mã:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Ví dụ
Tạo một khoảng thời gian 2 năm và 15 phút:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Kết quả thực thi mã:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Ví dụ
Tạo một khoảng thời gian 1 ngày, 12 giờ và 30 giây:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Kết quả thực thi mã:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Ví dụ
Tạo một khoảng thời gian âm 1 năm và 3 tháng (khoảng thời gian lùi):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Kết quả thực thi mã:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Ví dụ
Tạo một khoảng thời gian âm 2 giờ, 30 phút (khoảng thời gian lùi):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Kết quả thực thi mã:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Ví dụ
Thêm một khoảng thời gian vào ngày hiện tại:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Kết quả thực thi mã:
'2023-01-11'
Ví dụ
Tính sự khác biệt giữa hai ngày:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
Kết quả thực thi mã:
'1 months 14 days'
Xem thêm
-
lớp
DateTime,
biểu diễn ngày và giờ -
lớp
DateTimeZone,
biểu diễn múi giờ