ช่วยดูเรื่อง การหาระยะเวลา ครับ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ช่วยดูเรื่อง การหาระยะเวลา ครับ
function duration($begin,$end){
$remain=intval(strtotime($end)-strtotime($begin));
$wan=floor($remain/86400);
$l_wan=$remain%86400;
$hour=floor($l_wan/3600);
$l_hour=$l_wan%3600;
$minute=floor($l_hour/60);
$second=$l_hour%60;
return "เหลือเวลาอีก ".$wan." วัน ".$hour." ชั่วโมง ".$minute." นาที ".$second." วินาที";
}
echo duration($Enddate,$chk_date);
// $Enddate คือค่าที่อ่านจาก ดาต้าเบส คือ กำหนดปิดประมูล
// $chk_date คือค่าของวันที่ปัจจุบัน
// แล้วทำไมมันออกมาเป็นค่าแบบนี้ละครับ ผมว่ามันผิดนะครับ ดูจากรูปที่ผมทำมานะครับ

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
วันที่ปัจจุบัน ผมใช้สคลิปตัวนี้นะครับ (คิดขึ้นมาเอง) เพราะเวลาที่ server มันไม่ตรงกับกับประเทศไทย
// แก้ไขเรื่องเวลา ถ้าเครื่อง server ไม่ได้อยุ่เมืองไทย
$date1=date("Y-m-d"); // วันที่
$H1=date("H")+4; // ชัวโมง + - ได้ตามต้องการเลยนะครับ
if($H1<10){ $H="0$H1"; } else { $H="$H1"; }
$i1=date("i")+2; // นาที + - ได้ตามต้องการเลยครับ
if($i1<10){ $i="0$i1"; } else { $i="$i1"; }
$s1=date("s")+1; // วินาที + - ได้ตามต้องการเลยครับ
if($s1<10){ $s="0$s1"; } else { $s="$s1"; }
$chk_date = "$date1 $H:$i:$s";

ดูจาก function
function duration($begin,$end){
function duration(น่าจะเป็นวันที่ปัจจุบัน,วันที่ปิดประมูล){
และการส่งค่าไปใน function
echo duration($Enddate,$chk_date);
ลองสลับตำแหน่งเป็น
echo duration($chk_date,$Enddate);

ใช่แล้วครับ ท่านอาจารย์ ผมลองสลับันแล้ว ผลลัพธ์ออกมาถูกต้อง
ดังนั้นจำง่ายๆ คือ ถ้าจะหาระยะเวลาที่ผ่านมา ให้เอาวันที่ เริ่มต้นขึ้นก่อน ตามด้วยวันที่ปัจจุบัน echo duration($start,$chk_date);
หรือ ถ้าจะหาระยะเวลาที่เหลือ คือหาระยะเวลาภายภาคหน้า ก็ต้องเอา วันที่ปัจจุบันขึ้นก่อน แล้วตามด้วยวันที่ปัจจุบัน echo duration($Enddate,$chk_date);
หรือจะจำอีกอ่างคือ เอาค่าน้อยไว้ข้างหน้าตามด้วย ค่าที่มากกว่า
ตอนแรกที่ผมเข้าใจคือ เอาค่ามากลบด้วยค่าน้อย มันเลยไม่ถูกต้อง
ตอนนี้ถูกต้องแล้วครับ

แก้ไขครับ ข้างล่างพิมพ์ผิด
ใช่แล้วครับ ท่านอาจารย์ ผมลองสลับันแล้ว ผลลัพธ์ออกมาถูกต้อง
ดังนั้นจำง่ายๆ คือ ถ้าจะหาระยะเวลาที่ผ่านมา ให้เอาวันที่ เริ่มต้นขึ้นก่อน ตามด้วยวันที่ปัจจุบัน echo duration($start,$chk_date);
หรือ ถ้าจะหาระยะเวลาที่เหลือ คือหาระยะเวลาภายภาคหน้า ก็ต้องเอา วันที่ปัจจุบันขึ้นก่อน แล้วตามด้วยวันที่สิ้นสุด echo duration($chk_date,$Enddate);
หรือจะจำอีกอ่างคือ เอาค่าน้อยไว้ข้างหน้าตามด้วย ค่าที่มากกว่า
ตอนแรกที่ผมเข้าใจคือ เอาค่ามากลบด้วยค่าน้อย มันเลยไม่ถูกต้อง
ตอนนี้ถูกต้องแล้วครับ
