กำหนดระยะเวลาซ้ำๆด้วย Date interval

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 นี้.

Download หรือติดตั้งผ่าน 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( )
ล้างค่าทั้งหมดแล้วเริ่มต้นใหม่ตั้งแต่กำหนดวันที่เริ่มต้น.

 

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>