Date interval นี้จะทำหน้าที่คำณวนหาวันที่เริ่มใช้จริงๆจากวันที่กำหนดเริ่มต้นและความถี่ระยะซ้ำๆ. ยกตัวอย่างเช่น กำหนดวันที่เริ่มต้น 2015-08-01 และวันที่สิ้นสุดเมื่อ 2015-12-31 จากนั้นกำหนดความถี่ทุกๆ 4 วัน.
เมื่อสั่งแสดง ผลลัพธ์ที่ได้จะได้ตั้งแต่วันที่ 2015-08-01, 2015-08-05, 2015-08-09, 2015-08-13, 2015-08-17, 2015-08-21, 2015-08-25, 2015-08-29, 2015-09-02, 2015-09-06, 2015-09-10, ไปเรื่อยๆจนถึง 2015-12-31
และหากกำหนดวันที่เริ่มใช้หรือเริ่มแสดงใหม่. วันที่เริ่มใช้นี้หมายถึงวันที่เริ่มจะเรียกขึ้นมาประมวลผล ทั้งนี้วันที่เริ่มต้นในตัวอย่างนี้ยังคงเดิมอยู่ที่ 2015-08-01 นะครับ. ตัวอย่างกำหนดวันที่เริ่มใช้เป็น 2015-09-01 และวันที่หยุดใช้เป็น 2015-11-30.
เมื่อสั่งแสดง ผลลัพธ์จะได้ตั้งแต่วันที่ 2015-09-02, 2015-09-06, 2015-09-10, ไปเรื่อยๆจนถึง 2015-11-29.
ข้อสังเกตุ เมื่อกำหนดวันที่เริ่มใช้เป็น 2015-09-01 แต่ได้จริงๆเป็น 2015-09-02 นั้นมันไม่ใช่ทำงานผิดพลาดอะไร แต่เพราะความถี่ที่เคยกำหนดไว้คือทุกๆ 4 วัน ดังนั้นวันที่ 2015-09-01 จึงไม่ตรงกับวันไหนเลยตั้งแต่วันที่เริ่มต้นภายในช่วงความถี่ทุกๆ 4 วัน แต่จะไปตรงกับวันที่ 2015-09-02 แทน ดังนั้นวันที่เริ่มใช้จึงถูกดันไปวันนั้น แล้วนับความถี่ทุกๆ 4 วันไปเรื่อยๆ. วันที่แสดงออกมาก็จะไปตรงกับวันที่ทั้งหมดในช่วงของวันที่เริ่มต้นจนถึงวันที่สิ้นสุดพอดี.
ลองทำความเข้าใจจากตัวอย่างข้างบนก่อนนะครับ แล้วจึงจะทราบจุดประสงค์ที่แท้จริงของ class นี้.
ดาวน์โหลด หรือติดตั้งผ่าน Composer
อ้างอิง เอกสาร API
License: MIT
การใช้งาน หากไม่ได้ติดตั้งผ่าน Composer ให้ include/require /Rundiz/DateInterval/DateInterval.php ก่อนแล้วจึงเริ่มใช้งาน การกำหนดความถี่หรือระยะซ้ำๆนั้น สามารถกำหนดได้เป็นรายวัน, รายสัปดาห์, รายเดือน, รายปี
$DateInterval = new \Rundiz\DateInterval\DateInterval();
$DateInterval->date_begins = date('Y-08-01');
$DateInterval->date_end = date('Y-12-31');
$DateInterval->setInterval(4, 'D');
$list_dates = $DateInterval->getTheDates();
// แสดงวันที่ทั้งหมดตั้งแต่วันที่เริ่มต้น จนถึงวันที่สิ้นสุด
print_r($list_dates);
// กำหนดวันที่เริ่มใช้และวันที่หยุดใช้
$list_dates = $DateInterval->getTheDates(date('Y-09-01'), date('Y-11-30'));
// แสดงวันที่ทั้งหมดภายในความถี่เดิม ตั้งแต่วันที่เริ่มใช้ถึงวันที่หยุดใช้ โดยต้องไม่นอกเกินกว่าวันที่เริ่มต้นถึงวันที่สิ้นสุด
print_r($list_dates);
// สามารถกำหนดวันที่เริ่มใช้และหยุดใช้ได้ใหม่ทันที
$list_dates = $DateInterval->getTheDates(date('Y-10-01'), date('Y-11-30'));
print_r($list_dates);
คำอธิบาย method, property ต่างๆ
$date_begins กำหนดวันที่เริ่มต้น. คุณต้องกำหนดค่านี้เพื่อให้มันทำงานได้.
$date_end กำหนดวันที่สิ้นสุด. หากคุณไม่กำหนด จำนวนวันที่ที่จะถูกคำณวนออกมาจะมี 1000 รายการ
$date_format กำหนดรูปแบบวันที่ที่จะได้รับเมื่อเรียกใช้ method getTheDates()
. ค่าเดิมคือ Y-m-d
getErrorMessage()
รับค่าข้อความ error เมื่อมีบางอย่างผิดพลาด
setInterval(integer $number
[, string $range
= 'day'])
กำหนดความถี่หรือระยะซ้ำๆ
$number คือจำนวนเลขความถี่หรือระยะซ้ำๆ
$range คือหน่วยของความถี่หรือระยะ โดยจะรับค่าเป็น วัน (D), สัปดาห์ (W), เดือน (M), ปี (Y)
getTheDates([string $start_date
= '' [, string $stop_date
= '']])
รับค่าวันที่โดยหากไม่กำหนดก็จะเป็นการแสดงวันที่ทั้งหมดจากวันที่เริ่มต้นถึงวันที่สิ้นสุด. หากกำหนดก็จะเป็นการคำณวนหาวันที่เริ่มใช้ใหม่ภายในระยะที่กำหนดและในขอบเขตของวันที่เริ่มต้น
$start_date กำหนดวันที่เริ่มใช้ใหม่ได้ รูปแบบเป็น Y-m-d
$stop_date กำหนดวันที่หยุดใช้ใหม่ได้ รูปแบบเป็น Y-m-d
reset( )
ล้างค่าทั้งหมดแล้วเริ่มต้นใหม่ตั้งแต่กำหนดวันที่เริ่มต้น.