ช่วยดูเรื่อง การหาระยะเวลา ครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ช่วยดูเรื่อง การหาระยะเวลา ครับ

ช่วยดูเรื่อง การหาระยะเวลา ครับ

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 คือค่าของวันที่ปัจจุบัน

// แล้วทำไมมันออกมาเป็นค่าแบบนี้ละครับ ผมว่ามันผิดนะครับ ดูจากรูปที่ผมทำมานะครับ



Mrmayom 28-03-2010 11:10:51

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1

วันที่ปัจจุบัน ผมใช้สคลิปตัวนี้นะครับ (คิดขึ้นมาเอง) เพราะเวลาที่ 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";



mrmayom 28-03-2010 11:14
 ความคิดเห็นที่ 2

ดูจาก function
function duration($begin,$end){

function duration(น่าจะเป็นวันที่ปัจจุบัน,วันที่ปิดประมูล){

และการส่งค่าไปใน function

echo duration($Enddate,$chk_date);

ลองสลับตำแหน่งเป็น

echo duration($chk_date,$Enddate);



ninenik 28-03-2010
 ความคิดเห็นที่ 3

ใช่แล้วครับ ท่านอาจารย์ ผมลองสลับันแล้ว ผลลัพธ์ออกมาถูกต้อง

ดังนั้นจำง่ายๆ คือ ถ้าจะหาระยะเวลาที่ผ่านมา ให้เอาวันที่ เริ่มต้นขึ้นก่อน ตามด้วยวันที่ปัจจุบัน  echo duration($start,$chk_date);

หรือ ถ้าจะหาระยะเวลาที่เหลือ คือหาระยะเวลาภายภาคหน้า ก็ต้องเอา วันที่ปัจจุบันขึ้นก่อน แล้วตามด้วยวันที่ปัจจุบัน echo duration($Enddate,$chk_date);  

หรือจะจำอีกอ่างคือ เอาค่าน้อยไว้ข้างหน้าตามด้วย ค่าที่มากกว่า

 

ตอนแรกที่ผมเข้าใจคือ เอาค่ามากลบด้วยค่าน้อย มันเลยไม่ถูกต้อง

 

ตอนนี้ถูกต้องแล้วครับ



mrmayom 28-03-2010 16:35
 ความคิดเห็นที่ 4

แก้ไขครับ ข้างล่างพิมพ์ผิด

 

ใช่แล้วครับ ท่านอาจารย์ ผมลองสลับันแล้ว ผลลัพธ์ออกมาถูกต้อง

ดังนั้นจำง่ายๆ คือ ถ้าจะหาระยะเวลาที่ผ่านมา ให้เอาวันที่ เริ่มต้นขึ้นก่อน ตามด้วยวันที่ปัจจุบัน  echo duration($start,$chk_date);

หรือ ถ้าจะหาระยะเวลาที่เหลือ คือหาระยะเวลาภายภาคหน้า ก็ต้องเอา วันที่ปัจจุบันขึ้นก่อน แล้วตามด้วยวันที่สิ้นสุด echo duration($chk_date,$Enddate);  

หรือจะจำอีกอ่างคือ เอาค่าน้อยไว้ข้างหน้าตามด้วย ค่าที่มากกว่า

 

ตอนแรกที่ผมเข้าใจคือ เอาค่ามากลบด้วยค่าน้อย มันเลยไม่ถูกต้อง

 

ตอนนี้ถูกต้องแล้วครับ



mrmayom 28-03-2010 16:37
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ