Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,986

HOME > PHP > PHP Forum > นับจำนวนสัปดาห์ในแต่ละเดือน (หัวข้อต้องมากกว่า 50 ตัวอักษร)



 

นับจำนวนสัปดาห์ในแต่ละเดือน (หัวข้อต้องมากกว่า 50 ตัวอักษร)

 



Topic : 132133



โพสกระทู้ ( 198 )
บทความ ( 0 )



สถานะออฟไลน์




สวัสดีครับ มีข้อสงสัยเกี่ยวกับ Carbon library
คือผมต้องการหาจำนวนสัปดาห์ ในแต่ละเดือน ว่ามีกี่สัปดาห์
แต่เจ้า Carbon return มาซะผมงง

Code (PHP)
$start = Carbon::now($this->company()->time_zone)->firstOfMonth();
        $end = Carbon::now($this->company()->time_zone)->lastOfMonth();
        $startDate = $start->dayOfWeek;
        $endDate = $end->dayOfWeek;
        $number_of_week = $end->weekNumberInMonth;
        $weeks = [];
        $i = 1;
        for ($w = 1; $w <= $number_of_week; $w++) {
            for ($d = 0; $d <= 6; $d++) {
                if ($w == 1 && $d < $startDate) {
                    $weeks[$w][$d] = '';
                } else {
                    if ($w == $number_of_week + 1 && $d > $endDate) {
                        $weeks[$w][$d] = '';
                    } else {
                        $weeks[$w][$d] = $i;
                        $i++;
                    }
                }

            }

        }



จากตัวอย่างที่แนบมาคือ
$number_of_week = $end->weekNumberInMonth; //ตรงนี้คือปัญหา จริงๆ
เดือนนี้ มันมี 6 สัปดาห์ แต่มันดัน return 5 ผิด
เดือนหน้า มี 5 ดัน return 4 ผิด
แต่เดือนที่แล้วมี 5 มัน return 5 ถูก
เลยงงว่าเกิดจากอะไร หรือมีวิธีนับจำนวนสัปดาห์ของแต่ละเดือนไหมครับ
ขอบคุณครับ



Tag : PHP, Laravel Framework







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-09-24 14:58:48 By : DK View : 382 Reply : 4
 

 

No. 1



โพสกระทู้ ( 3,576 )
บทความ ( 8 )



สถานะออฟไลน์


ไม่รู้ว่าของผมจะนำไปใช้ได้หรือเปล่าแต่ลองเล่นดูครับ https://rundiz.com/?p=141






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-09-24 15:36:34 By : mr.v
 


 

No. 2



โพสกระทู้ ( 198 )
บทความ ( 0 )



สถานะออฟไลน์


สำหรับของ carbon ผมไปเจอใน doc มาละครับเขานับจากวันจันทร์
var_dump($dt->weekNumberInMonth); // int(1)
// weekNumberInMonth consider weeks from monday to sunday, so the week 1 will

แต่ผมอยากวาดให้เริ่มจากวันอาทิตย์ เสียใจ...

@mr.v ขอบคุณครับ เดี๋ยวลองดู
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-09-24 16:08:47 By : DK
 

 

No. 3



โพสกระทู้ ( 198 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.v เมื่อวันที่ 2018-09-24 15:36:34
รายละเอียดของการตอบ ::
ขอบคุณมากครับ
ตามที่ต้องการเลยครับ ลองเทสละ สูตรแจ่มมาก แต่ผมขอปรับโค๊ดนิดหน่อยไม่แก้สูตร

แต่ยังไม่ยอมแพ้ ขอหา ทางเลือก ที่ดีกว่านี้เรื่อยๆ เพราะคิดว่าน่าจะได้ใช้อีก



Code (PHP)
function numberOfWeeks(Carbon $start, Carbon $end)
    {
        $firstDayWeek = $start->dayOfWeek;
        $lastDayWeek = $end->dayOfWeek;
        $totalDay = $start->diffInDays($end) + 1;

        $prefixWeek = 4;

        switch ($totalDay) {
            case 28:
                $offset = ($firstDayWeek - 1) - 1;
                $diffDays = ($lastDayWeek - $offset);

                if ($lastDayWeek > $totalDay) {
                    $diffDays = 0;
                }
                $totalWeeks = ($prefixWeek + $diffDays);

                break;
            case 29:

                $offset = ($firstDayWeek - 1) - 1;
                $diffDays = ($lastDayWeek - $offset);
                $totalWeeks = ($prefixWeek + $diffDays);
                break;

            case 30:

                $offset = ($firstDayWeek - 1) + 1;
                $diffDays = ($lastDayWeek - $offset);
                if ($lastDayWeek < $firstDayWeek) {
                    $diffDays = 2;
                }
                $totalWeeks = ($prefixWeek + $diffDays);
                break;

            case 31:
                $offset = ($firstDayWeek - 1) + 2;
                $diffDays = ($lastDayWeek - $offset);
                if ($lastDayWeek < $firstDayWeek) {
                    $diffDays = 2;
                }
                $totalWeeks = ($prefixWeek + $diffDays);
                break;
            default:
                return false;
        }

        return $totalWeeks;
    }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-09-24 17:27:33 By : DK
 


 

No. 4



โพสกระทู้ ( 198 )
บทความ ( 0 )



สถานะออฟไลน์


เอามาแชร์ เผื่อเป็นประโยชน์ครับ
การหา calendar โดยเริ่มจากวันอาทิตย์ โดยใช้ Carbon และไม่สนใจวันด้านหลัง

Code (PHP)
       $days = CarbonPeriod::between(Carbon::now()->startOfMonth(), Carbon::now()->endOfMonth());
       $shift_days = array_fill(0, Carbon::now()->startOfMonth()->dayOfWeek, '');
       array_merge($shift_days, $days->toArray());



ประวัติการแก้ไข
2018-09-27 14:10:36
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-09-27 12:33:45 By : DK
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : นับจำนวนสัปดาห์ในแต่ละเดือน (หัวข้อต้องมากกว่า 50 ตัวอักษร)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่