Get Start and End Days for a Given Week in PHP

前端 未结 16 1871
囚心锁ツ
囚心锁ツ 2020-12-01 03:49

I\'m trying to get the week range using Sunday as the start date, and a reference date, say $date, but I just can\'t seem to figure it out.

For example,

16条回答
  •  独厮守ぢ
    2020-12-01 04:28

    You can now use DateTime to get start/end dates of week(s)

    function getDateRangeForAllWeeks($start, $end){
        $fweek = getDateRangeForWeek($start);
        $lweek = getDateRangeForWeek($end);
        $week_dates = [];
        while($fweek['sunday']!=$lweek['sunday']){
            $week_dates [] = $fweek;
            $date = new DateTime($fweek['sunday']);
            $date->modify('next day');
    
            $fweek = getDateRangeForWeek($date->format("Y-m-d"));
        }
        $week_dates [] = $lweek;
    
        return $week_dates;
    }
    
    function getDateRangeForWeek($date){
        $dateTime = new DateTime($date);
        $monday = clone $dateTime->modify(('Sunday' == $dateTime->format('l')) ? 'Monday last week' : 'Monday this week');
        $sunday = clone $dateTime->modify('Sunday this week'); 
        return ['monday'=>$monday->format("Y-m-d"), 'sunday'=>$sunday->format("Y-m-d")];
    }
    

    Usage

    print_r( getDateRangeForWeek("2016-05-07") );
    
    print_r( getDateRangeForAllWeeks("2015-11-07", "2016-02-15") );
    

提交回复
热议问题