php คำนวณวันและเวลาในการทำงาน

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

php คำนวณวันและเวลาในการทำงาน
ขอสอบถามคะ พอดีว่าทำระบบเกี่ยวกับการซ่อม โดยมีการกำหนดเวลาในการซ่อมเป็นมาตรฐานไว้แล้ว พอ User อัปเดตวันเริ่มซ่อมให้ระบบรันวันที่อัตโนมัติเลยตามค่ามาตรฐานที่ตั้งไว้ จึงอยากทราบว่า เราจำคำนวณวันและเวลายังไงคะ (ทำงาน 8 ชม./วัน หยุดพัก 12.00 น.) เช่น

เริ่มซ่อม 2020-06-23 09.30 น. 
ขั้นตอนแรกกำหนดใช้เวลาในการซ่อมคือ 1 ชม. 30 นาที 
ขั้นตอนแรกจะต้องเสร็จภายในวันที่ 2020-06-23 11.00 น. (2020-06-23 09.30 + 1 ชม. 30 นาที)
ขั้นตอนที่ 2 กำหนดใช้เวลาในการซ่อมคือ 1 ชม.
ขั้นตอนที่ 2 จะต้องเสร็จภายในวันที่ 2020-06-23 12.00 น. (2020-06-23 11.00 + 1 ชม.)
ขั้นตอนที่ 3 กำหนดใช้เวลาในการซ่อมคือ 30 นาที
ขั้นตอนที่ 6 จะต้องเสร็จภายในวันที่ 2020-06-23 13.30 น. (ข้าม 12.00 เริ่มนับ 13.00 + 30 นาที)

ประมาณนี้คะ


Anyarut 14.207.204.xxx 23-06-2020 10:35:26

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

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


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


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

 ความคิดเห็นที่ 1
ลองศึกษา การใช้งาน strtotime() จากบทความตามลิ้งค์ด้านล่างเป็นแนวทาง

date_default_timezone_set("Asia/Bangkok");


$step_1 = "09.30";
$work_time_1 = " +1 hour +30 minute ";
$step_1_end = date("Y-m-d H:i",strtotime($step_1.$work_time_1));
echo $step_1_end;
echo "\r\n";
$step_2 = $step_1_end;
$work_time_2 = " +1 hour ";
$step_2_end = date("Y-m-d H:i",strtotime($step_2.$work_time_2));
echo $step_2_end;
echo "\r\n";
$step_3 = $step_2_end;
$work_time_3 = " +30 minute ";
$step_3_end = date("Y-m-d H:i",strtotime($step_3.$work_time_3));
echo $step_3_end;

//////////
/*
2020-06-23 11:00
2020-06-23 12:00
2020-06-23 12:30
*/



เมื่อเรากำหนดเวลาทำงานได้เอง ช่วงเวลากลางวัน ก็เพิ่มเงื่อนไขตามต้องการ เช่น
ถ้าเป็นเวลาเที่ยง ก็ให้เริ่มต้นเวลาเป็น 13:00 แทน

<?php
date_default_timezone_set("Asia/Bangkok");

$lunchtime = strtotime("12:00");
$lunchtime_end = strtotime("13:00");

$step_1 = "09.30";
$work_time_1 = " +1 hour +30 minute ";
$step_1_end = date("Y-m-d H:i",strtotime($step_1.$work_time_1));
echo $step_1_end;
echo "\r\n";
$step_2 = $step_1_end;
$work_time_2 = " +1 hour ";
$step_2_end = date("Y-m-d H:i",strtotime($step_2.$work_time_2));
echo $step_2_end;
echo "\r\n";
if(strtotime($step_2_end)>=$lunchtime && strtotime($step_2_end)<$lunchtime_end){
  $step_2_end = "13:00";   
}
$step_3 = $step_2_end;
$work_time_3 = " +30 minute ";
$step_3_end = date("Y-m-d H:i",strtotime($step_3.$work_time_3));
echo $step_3_end;

//////////
/*
2020-06-23 11:00
2020-06-23 12:00
2020-06-23 13:30
*/


บทความแนะนำที่เกี่ยวข้อง
การใช้งานรูปแบบข้อความวันที่และเวลา กับฟังก์ชั่น strtotime() ใน phpอ่าน 19,649
Ninenik 223.24.189.xxx 23-06-2020
 ความคิดเห็นที่ 2
ขอบคุณมาก ๆ เลยค่ะ 


Anyarut 14.207.204.xxx 23-06-2020 13:55
 ความคิดเห็นที่ 3
ขอสอบถามเพิ่มเติมคะ เวลาทำงานคือ 08.00-17.00 เราจะกำหนดยังไงคะ ถ้ามันเกิน 17.00 ให้คำนวณวันถัดไป 


Anyarut 49.231.10.xxx 23-06-2020 14:22
 ความคิดเห็นที่ 4
ทำความเข้าใจการใช้งาน strtotime() ให้คล่อง และประยุกต์ใช้งาน

echo date("Y-m-d H:i:s",strtotime("tomorrow 08:00 +1 hour +30 minute"));

// 2020-06-24 09:30:00





บทความแนะนำที่เกี่ยวข้อง
การใช้งานรูปแบบข้อความวันที่และเวลา กับฟังก์ชั่น strtotime() ใน phpอ่าน 19,649
Ninenik 223.24.189.xxx 23-06-2020
1






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