คำนวณหาระยะห่างระหว่างวันที่ PHP
หน้าแรก PHP MySQL เกร็ดความรู้ คำนวณหาระยะห่างระหว่างวันที่ PHP
<?php
####### รูปแบบของวันที่ ที่อาจจะเก็บลงในฐานข้อมูลแบบนี้ ######
$start_date=?17/03/2007?; // วันที่เริ่มใช้บริการ
$expire_date=?17/03/2008?;//วันสิ้นสุดการใช้บริการ
$today_date=date(?d/m/Y ?);//วันที่ของวันนี้
## ฟังก์ชั่น explode ใช้แยกเครื่องหมาย ( / ) ออกจากข้อความ แล้วเอาข้อความที่ได้ไปแยกเก็บลงใน array ##
/* วันที่เริ่มใช้บริการ */
$start_explode = explode(?/?, $start_date);
$start_day = $start_explode[0];
$start_month = $start_explode[1];
$start_year = $start_explode[2];
/*วันสิ้นสุดการใช้บริการ*/
$expire_explode = explode(?/?, $expire_date);
$expire_day = $expire_explode[0];
$expire_month = $expire_explode[1];
$expire_year = $expire_explode[2];
/*วันที่ของวันนี้*/
$today_explode = explode(?/?, $today_date);
$today_day = $today_explode[0];
$today_month = $today_explode[1];
$today_year = $today_explode[2];
/* ฟังก์ชั่น gregoriantojd เป็นฟังก์ชั่นที่เอาไว้แปลงวันที่ เพื่อใช้คำนวณหาจำนวนวัน
รูปแบบการใช้งาน gregoriantojd ( int $month, int $day, int $year )
โฮสที่ใช้ต้องทำการเปิด extension calendar ของ php ด้วย ถึงจะใช้งานได้*/
$start = gregoriantojd($start_month,$start_day,$start_year);
$expire = gregoriantojd($expire_month,$expire_day,$expire_year);
$today = gregoriantojd($today_month,$today_day,$today_year);
$period_of_time = $expire-$start; //หาระยะเวลาการใช้งาน
$date_current=$expire-$today;//หาวันที่เหลืออยู่
echo ?เริ่มใช้บริการวันที่ :?,$start_date,?<br>?;
echo ?สิ้นสุดวันใช้บริการวันที่ :?,$expire_date,?<br>?;
echo ?ระยะเวลาการใช้งาน : ?,$period_of_time ,? วัน<br>? ;
echo ?<b>วันนี้</b> ?.วันที่ $today_date ขณะนี้จึงเหลือเวลาอีก :?,$date_current,? วัน จึงจะถึงวันที่ $expire_date ซึ่งเป็นวันหมดอายุการใช้งาน<br>?;
?>
ผลลัพธ์จะออกมาเช่นนี้
เริ่มใช้บริการวันที่ :17/03/2007
สิ้นสุดวันใช้บริการวันที่ :17/03/2008
ระยะเวลาการใช้งาน : 366 วัน
วันนี้ ?.วันที่ 18/03/2007 ขณะนี้จึงเหลือเวลาอีก :365 วัน จึงจะถึงวันที่ 17/03/2008 ซึ่งเป็นวันหมดอายุการใช้งาน
ลองเอาไปประยุกต์ใส่เงื่อนไขกันดูครับ
เช่น เช็คค่าถ้าเหลือ 15 วัน ส่งเมลล์แจ้งเตือนอัติโนมัติให้ลูกค้ามาต่ออายุ อะไรทำนองนี้อ่ะครับ
วิธีการนำโค้ดข้างต้นไปใช้สำหรับโฮสที่ไม่ได้ลง extension calendar ของ php
พอดีผมทำให้ลูกค้าเค้าจะเอาไปใช้ที่โฮสเค้า
พอไปลงโปรแกรมปรากฎว่าโปรแกรมรันไม่ได้ครับ
เพราะว่าโฮสที่เค้าเช่าไม่ได้ลง extension calendar ของ php
ก็เลยไป Search หาวิธีมา เจอว่า ถ้าไม่ได้ลง ก็ไม่เป็นไร
ไม่ต้องไปบอกให้เจ้าของ Server เค้าลงให้ หรือว่าเปิดให้ใช้งาน
เพียงเอาฟังก์ชั่นด้านล่างนี้ใส่ แล้ว include ไปใช้งาน ก็ใช้งานได้ล่ะครับ
<?php
function GregorianToJD ($month,$day,$year) {
if ($month > 2) {
$month = $month - 3;
} else {
$month = $month + 9;
$year = $year - 1;
}
$c = floor($year / 100);
$ya = $year - (100 * $c);
$j = floor((146097 * $c) / 4);
$j += floor((1461 * $ya)/4);
$j += floor(((153 * $month) + 2) / 5);
$j += $day + 1721119;
return $j;
}
?>
ขึ้นไปด้านบน
