จำนวนสัปดาห์ของแต่ละเดือนไม่ตรงจำนวนสัปดาห์ทั้งปี

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

จำนวนสัปดาห์ของแต่ละเดือนไม่ตรงจำนวนสัปดาห์ทั้งปี
ช่วยแนะนำหน่อยครับว่าทำไหมสัปดาห์ของเดือนถึงไม่เท่ากับ 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 สัปดาห์
 


Takabe 08-02-2024 15:12:53

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

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


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


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

 ความคิดเห็นที่ 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
ninenik 08-02-2024






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