คลาส DateInterval

คลาส DateInterval ช่วยให้ทำงานกับช่วงเวลาใน PHP ได้ มันถูกใช้เพื่อเก็บความแตกต่างระหว่างสองวันที่หรือเพื่อกำหนดช่วงเวลา ในเมธอดที่ทำงานกับวันที่ ช่วงเวลาถูกสร้างขึ้นในรูปแบบพิเศษ

ไวยากรณ์

phpDateInterval::__construct(string $duration)

รูปแบบช่วงเวลา

รูปแบบประกอบด้วยตัวอักษร P (period) และองค์ประกอบ:

phpP{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<?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<?php
  $interval = new DateInterval('PT1H45M30S');
  var_dump($interval);
?>

ผลลัพธ์การทำงานของโค้ด:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 0
  'h' => 1
  'i' => 45
  's' => 30
)

ตัวอย่าง

สร้างช่วงเวลา 3 สัปดาห์ และ 2 วัน:

php<?php
  $interval = new DateInterval('P3W2D');
  var_dump($interval);
?>

ผลลัพธ์การทำงานของโค้ด:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 23
  'h' => 0
  'i' => 0
  's' => 0
)

ตัวอย่าง

สร้างช่วงเวลา 5 เดือน, 10 วัน และ 6 ชั่วโมง:

php<?php
  $interval = new DateInterval('P5M10DT6H');
  var_dump($interval);
?>

ผลลัพธ์การทำงานของโค้ด:

phpDateInterval Object
(
  'y' => 0
  'm' => 5
  'd' => 10
  'h' => 6
  'i' => 0
  's' => 0
)

ตัวอย่าง

สร้างช่วงเวลา 2 ปี และ 15 นาที:

php<?php
  $interval = new DateInterval('P2YT15M');
  var_dump($interval);
?>

ผลลัพธ์การทำงานของโค้ด:

phpDateInterval Object
(
  'y' => 2
  'm' => 0
  'd' => 0
  'h' => 0
  'i' => 15
  's' => 0
)

ตัวอย่าง

สร้างช่วงเวลา 1 วัน, 12 ชั่วโมง และ 30 วินาที:

php<?php
  $interval = new DateInterval('P1DT12H30S');
  var_dump($interval);
?>

ผลลัพธ์การทำงานของโค้ด:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 1
  'h' => 12
  'i' => 0
  's' => 30
)

ตัวอย่าง

สร้างช่วงเวลาแบบลบ 1 ปี และ 3 เดือน (ช่วงเวลาย้อนกลับ):

php<?php
  $interval = new DateInterval('P1Y3M');
  $interval->invert = 1;
  var_dump($interval);
?>

ผลลัพธ์การทำงานของโค้ด:

phpDateInterval Object
(
  'y' => 1
  'm' => 3
  'd' => 0
  'h' => 0
  'i' => 0
  's' => 0
  'invert' => 1
)

ตัวอย่าง

สร้างช่วงเวลาแบบลบ 2 ชั่วโมง, 30 นาที (ช่วงเวลาย้อนกลับ):

php<?php
  $interval = new DateInterval('PT2H30M');
  $interval->invert = 1;
  var_dump($interval);
?>

ผลลัพธ์การทำงานของโค้ด:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 0
  'h' => 2
  'i' => 30
  's' => 0
  'invert' => 1
)

ตัวอย่าง

เพิ่มช่วงเวลาไปยังวันที่ปัจจุบัน:

php<?php
  $date = new DateTime('2023-01-01');
  $interval = new DateInterval('P10D');
  $date->add($interval);
  echo $date->format('Y-m-d');
?>

ผลลัพธ์การทำงานของโค้ด:

php'2023-01-11'

ตัวอย่าง

คำนวณความแตกต่างระหว่างสองวันที่:

php<?php
  $date1 = new DateTime('2023-01-01');
  $date2 = new DateTime('2023-02-15');
  $interval = $date1->diff($date2);
  echo $interval->format('%m months %d days');
?>

ผลลัพธ์การทำงานของโค้ด:

php'1 months 14 days'

ดูเพิ่มเติม

  • คลาส DateTime,
    ซึ่งแสดงถึงวันที่และเวลา
  • คลาส DateTimeZone,
    ซึ่งแสดงถึงเขตเวลา