คลาส DateInterval
คลาส DateInterval ช่วยให้ทำงานกับช่วงเวลาใน PHP ได้
มันถูกใช้เพื่อเก็บความแตกต่างระหว่างสองวันที่หรือเพื่อกำหนดช่วงเวลา
ในเมธอดที่ทำงานกับวันที่ ช่วงเวลาถูกสร้างขึ้นในรูปแบบพิเศษ
ไวยากรณ์
DateInterval::__construct(string $duration)
รูปแบบช่วงเวลา
รูปแบบประกอบด้วยตัวอักษร P (period)
และองค์ประกอบ:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
ในรูปแบบนี้: Y - ปี, M - เดือน,
D - วัน, T - ตัวคั่นเวลา,
H - ชั่วโมง, M - นาที, S - วินาที,
W - สัปดาห์
ก่อนตัวอักษรเหล่านี้ต้องเขียนค่า
ที่สอดคล้องกัน ตัวอย่างเช่น 3Y จะหมายถึง
สามปี และ 5Y2M จะหมายถึง
5 ปี และ 2 เดือน
หลังจากสร้าง วัตถุ DateInterval
จะประกอบด้วยคุณสมบัติต่อไปนี้:
<?php
$interval->y // ปี
$interval->m // เดือน
$interval->d // วัน
$interval->h // ชั่วโมง
$interval->i // นาที
$interval->s // วินาที
$interval->f // ไมโครวินาที
$interval->invert // 1 ถ้าช่วงเวลาเป็นลบ
$interval->days // จำนวนวัน (หากสร้างผ่าน diff())
?>
มาดูการทำงานของช่วงเวลา จากตัวอย่าง:
ตัวอย่าง
สร้างช่วงเวลา 1 ชั่วโมง, 45 นาที และ 30 วินาที:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
ผลลัพธ์การทำงานของโค้ด:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
ตัวอย่าง
สร้างช่วงเวลา 3 สัปดาห์ และ 2 วัน:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
ผลลัพธ์การทำงานของโค้ด:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
ตัวอย่าง
สร้างช่วงเวลา 5 เดือน, 10 วัน และ 6 ชั่วโมง:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
ผลลัพธ์การทำงานของโค้ด:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
ตัวอย่าง
สร้างช่วงเวลา 2 ปี และ 15 นาที:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
ผลลัพธ์การทำงานของโค้ด:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
ตัวอย่าง
สร้างช่วงเวลา 1 วัน, 12 ชั่วโมง และ 30 วินาที:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
ผลลัพธ์การทำงานของโค้ด:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
ตัวอย่าง
สร้างช่วงเวลาแบบลบ 1 ปี และ 3 เดือน (ช่วงเวลาย้อนกลับ):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
ผลลัพธ์การทำงานของโค้ด:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
ตัวอย่าง
สร้างช่วงเวลาแบบลบ 2 ชั่วโมง, 30 นาที (ช่วงเวลาย้อนกลับ):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
ผลลัพธ์การทำงานของโค้ด:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
ตัวอย่าง
เพิ่มช่วงเวลาไปยังวันที่ปัจจุบัน:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
ผลลัพธ์การทำงานของโค้ด:
'2023-01-11'
ตัวอย่าง
คำนวณความแตกต่างระหว่างสองวันที่:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
ผลลัพธ์การทำงานของโค้ด:
'1 months 14 days'
ดูเพิ่มเติม
-
คลาส
DateTime,
ซึ่งแสดงถึงวันที่และเวลา -
คลาส
DateTimeZone,
ซึ่งแสดงถึงเขตเวลา