จำนวนสัปดาห์ของแต่ละเดือนไม่ตรงจำนวนสัปดาห์ทั้งปี
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา จำนวนสัปดาห์ของแต่ละเดือนไม่ตรงจำนวนสัปดาห์ทั้งปี
จำนวนสัปดาห์ของแต่ละเดือนไม่ตรงจำนวนสัปดาห์ทั้งปี
ช่วยแนะนำหน่อยครับว่าทำไหมสัปดาห์ของเดือนถึงไม่เท่ากับ 53 รวมกันแต่ละเดือนได้ 62 ครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <!--?php // ปีที่ต้องการคำนวณ $year = date ( "Y" ); //วันเริ่มต้นของปี $start_date = strtotime ( "$year-01-01" ); // วันสุดท้ายของปี $end_date = strtotime ( "$year-12-31" ); // หาจำนวนสัปดาห์ในระหว่างวันที่ $number_of_weeks = ceil ( ( date ( 'z' , $end_date ) - date ( 'z' , $start_date ) + 1) / 7 ); // สร้างตัวแปรเก็บจำนวนสัปดาห์ในแต่ละเดือน $weeks_in_each_month = array (); // วนลูปเพื่อคำนวณจำนวนสัปดาห์ในแต่ละเดือน for ( $month = 1; $month <= 12; $month ++) { // หาวันแรกของเดือน $first_day_of_month = strtotime ( "$year-$month-01" ); // หาวันสุดท้ายของเดือน $last_day_of_month = strtotime ( date ( "Y-m-t" , strtotime ( "$year-$month-01" )) ); // หาจำนวนสัปดาห์ในเดือน $weeks_in_month = ceil ( ( date ( 't' , $first_day_of_month ) + date ( 'N' , $first_day_of_month ) - 1) / 7 ); // เก็บผลลัพธ์ในอาร์เรย์ $weeks_in_each_month [ $month ] = $weeks_in_month ; } echo "จำนวนสัปดาห์ $number_of_weeks <br-->" ; // แสดงผลลัพธ์ foreach ( $weeks_in_each_month as $month => $weeks ) { echo "เดือน $month มี $weeks สัปดาห์ <br>" ; } ?> |
ค่าที่ออกมาครับ
จำนวนสัปดาห์ 53
เดือน 1 มี 5 สัปดาห์
เดือน 2 มี 5 สัปดาห์
เดือน 3 มี 5 สัปดาห์
เดือน 4 มี 5 สัปดาห์
เดือน 5 มี 5 สัปดาห์
เดือน 6 มี 5 สัปดาห์
เดือน 7 มี 5 สัปดาห์
เดือน 8 มี 5 สัปดาห์
เดือน 9 มี 6 สัปดาห์
เดือน 10 มี 5 สัปดาห์
เดือน 11 มี 5 สัปดาห์
เดือน 12 มี 6 สัปดาห์
จำนวนสัปดาห์ 53
เดือน 1 มี 5 สัปดาห์
เดือน 2 มี 5 สัปดาห์
เดือน 3 มี 5 สัปดาห์
เดือน 4 มี 5 สัปดาห์
เดือน 5 มี 5 สัปดาห์
เดือน 6 มี 5 สัปดาห์
เดือน 7 มี 5 สัปดาห์
เดือน 8 มี 5 สัปดาห์
เดือน 9 มี 6 สัปดาห์
เดือน 10 มี 5 สัปดาห์
เดือน 11 มี 5 สัปดาห์
เดือน 12 มี 6 สัปดาห์

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
1 ปีมี 365 ถึง 366 วัน คิดเป็นทั้งหมด 52 สัปดาห์
หรือก็คือเอา 365 หาร 7
แต่เราไม่สามารถหาสัปดาห์แต่ละเดือนแบบนั้น แล้วมาบวกสัปดาห์ให้ครบ 1 ปี
จะไม่ตรงกัน เพราะลำดับสัปดาห์ของ 1 ปี จะมีการคาบเกี่ยวกันของสองเดือน
>>> อัพเดท >>> 08-02-2024
------------------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | // วันสุดท้ายของแต่ละเดือนตรงกับสัปดาห์ที่เท่าไหร่ for ( $month =1; $month <=12; $month ++){ $last_day_of_month = date ( "Y-m-t" , strtotime ( date ( "Y" ). "-" . $month . "-01" )); echo $last_day_of_month . "<br>" ; // วันสุดท้ายของเดือน echo date ( "W" , strtotime ( $last_day_of_month )). "<br>" ; // สัปดาห์ของวันสุดท้าย } // วันแรกของเดือนตรงกับสัปดาห์ที่เท่าไหร่ for ( $month =1; $month <=12; $month ++){ $first_date_of_month = date ( "Y-m-d" , strtotime ( date ( "Y" ). "-" . $month . "-01" )); echo $first_date_of_month . "<br>" ; // วันแรกของเดือน echo date ( "W" , strtotime ( $first_date_of_month )). "<br>" ; // ตรงกับสัปดาห์ที่ } // ฟังก์ชั่นหาวันแรก และวันสุดท้ายของสัปดาห์โดยใช้ปี กับสัปดาห์ที่ต้องการ function getStartAndEndDate( $week , $year ) { $dto = new DateTime(); $dto ->setISODate( $year , $week ); $ret [ 'week_start' ] = $dto ->format( 'Y-m-d' ); $dto ->modify( '+6 days' ); $ret [ 'week_end' ] = $dto ->format( 'Y-m-d' ); return $ret ; } $week_array = getStartAndEndDate(52,2023); print_r( $week_array ); |
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
การสร้างวันเวลาปัจจุบัน ด้วยฟังก์ชัน date() | อ่าน 37,959 |
การใช้งานรูปแบบข้อความวันที่และเวลา กับฟังก์ชั่น strtotime() ใน php | อ่าน 56,431 |
การจัดการวันที่และเวลาโดยใช้ DateTime ใน php | อ่าน 11,636 |

ขอบคุณทุกการสนับสนุน
![]()