การตรวจสอบวันหยุดจาก input เพื่อหาวันไปส่งอาหารสัตว์

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา การตรวจสอบวันหยุดจาก input เพื่อหาวันไปส่งอาหารสัตว์

การตรวจสอบวันหยุดจาก input เพื่อหาวันไปส่งอาหารสัตว์
ผมได้โปรเจคเป็นการรับค่าวันที่จาก user เพื่อให้ไปส่งอาหารสัตว์ โดยเงื่อนไขที่ต้องทำคือหากค่า input วันหยุดที่ป้อนเข้าไปตรงกับวันหยุดเสาร์อาทิตย์หรือวันหยุดนักขัต(ผมเพิ่มเข้า database ของ SQL Server เพื่อดึงมาตรวจสอบ) ก็ให้ไปส่งก่อนหรือหลังจากวันที่ป้อนเข้าไป 4 วัน โดนขึ้รอยู่กับเงื่อนไขอาหารที่เหลืออยู่ ถ้าหากว่ามากกว่า 30% ให้ไปส่งหลัง 4 วันจากวันที่ input หากน้อยกว่า 30% ให้ไปส่งก่อน 4 วันจากวันที่ input เข้าไป ขอรบกวนทุกท่านด้วยครับ
<html>
<head>
<title>ตารางแสดงวันส่งอาหาร</title>
</head>
<body>
<?php
 
 $strStartDate = "2020-01-01";
 $strEndDate = "2020-12-31";
 
 $intWorkDay = 0;
 $intHoliday = 0;
 $intTotalDay = ((strtotime($strEndDate) - strtotime($strStartDate))/  ( 60 * 60 * 24 )) + 1; 

 while (strtotime($strStartDate) <= strtotime($strEndDate)) {
  
  $DayOfWeek = date("w", strtotime($strStartDate));
  if($DayOfWeek == 0 or $DayOfWeek ==6)  // 0 = Sunday, 6 = Saturday;
  {
   $intHoliday++;
   echo "$strStartDate = <font color=red>Holiday</font><br>";
  }
  else
  {
   $intWorkDay++;
   echo "$strStartDate = <b>Work Day</b><br>";
  }
  //$DayOfWeek = date("l", strtotime($strStartDate)); // return Sunday, Monday,Tuesday....

  $strStartDate = date ("Y-m-d", strtotime("+1 day", strtotime($strStartDate)));
 }

 echo "<hr>";
 echo "<br>Total Day = $intTotalDay";
 echo "<br>Work Day = $intWorkDay";
 echo "<br>Holiday = $intHoliday";
?>
</body>
</html>



Gg1603068412 22-10-2020 08:18:05

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

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


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


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

 ความคิดเห็นที่ 1
$holidayDate = [];

 
สร้างตัวแปร array เก็บ วันที่ที่เป็นเสาร์ อาทิตย์ หรือวันหยุด จากฐานข้อมูล
 
$holidayDate[] = $strStartDate;
 
เอาวันที่ป้อน ไปหาว่า มีค่าอยู่ใน array วันหยุดหรือไม่ in_array()
if(in_array($inputDate, $holidayDate)){

}
 
เงื่อนไขวันส่งตามต้องการ
 
    if($remain >= 30){
        $sendDate = date ("Y-m-d", strtotime("+4 day", strtotime($inputDate)));
    }else{
        $sendDate = date ("Y-m-d", strtotime("-4 day", strtotime($inputDate)));
    }

$strStartDate = "2020-01-01";
 $strEndDate = "2020-12-31";
  
 $intWorkDay = 0;
 $intHoliday = 0;
 $intTotalDay = ((strtotime($strEndDate) - strtotime($strStartDate))/  ( 60 * 60 * 24 )) + 1; 
 $holidayDate = [];
 
 while (strtotime($strStartDate) <= strtotime($strEndDate)) {
   
  $DayOfWeek = date("w", strtotime($strStartDate));
  if($DayOfWeek == 0 or $DayOfWeek ==6)  // 0 = Sunday, 6 = Saturday;
  {
    $holidayDate[] = $strStartDate;
   $intHoliday++;
   echo "$strStartDate = <font color=red>Holiday</font>rn";
  }
  else
  {
   $intWorkDay++;
   echo "$strStartDate = <b>Work Day</b>rn";
  }
  //$DayOfWeek = date("l", strtotime($strStartDate)); // return Sunday, Monday,Tuesday....
 
  $strStartDate = date ("Y-m-d", strtotime("+1 day", strtotime($strStartDate)));
 }
$inputDate = "2020-10-24";
$remain = 50; // 50%
$sendDate = null;
if(in_array($inputDate, $holidayDate)){
    if($remain >= 30){
        $sendDate = date ("Y-m-d", strtotime("+4 day", strtotime($inputDate)));
    }else{
        $sendDate = date ("Y-m-d", strtotime("-4 day", strtotime($inputDate)));
    }
}
echo $sendDate;


บทความแนะนำที่เกี่ยวข้อง
การใช้งานรูปแบบข้อความวันที่และเวลา กับฟังก์ชั่น strtotime() ใน phpอ่าน 54,948
Ninenik 22-10-2020






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