как получить диапазон за последние 5 недель и даты его начала и окончания в php / laravel - PullRequest
0 голосов
/ 13 января 2020

Я хочу, чтобы даты начала и окончания диапазона недели были последними 5 с диапазоном текущей недели следующим образом

2019-12-09 : 2019-12-15
2019-12-16 : 2019-12-22
2019-12-23 : 2019-12-29
2019-12-30 : 2020-01-05
2020-01-06 : 2020-01-12
2020-01-13 : 2020-01-19

Я смог получить дату начала и окончания диапазона текущей недели (2020-01-13: 2020-01 -19) из следующего кода

В контроллере

public function index()
{
    $currentWeekNumber = date("W"); 
    $currentYear = date("Y");  
    $weekArray = $this->getStartAndEndDate($currentWeekNumber,$currentYear);
    return view('mainMenu.timesheetFillLanding', compact('weekArray'));
}

public function getStartAndEndDate($week, $year) 
{
    //Below gives week from mon to sun
    $dto = new DateTime();
    $dto->setISODate($year, $week);
    $ret['start'] = $dto->format('Y-m-d');
    $dto->modify('+6 days');
    $ret['end'] = $dto->format('Y-m-d');
    return $ret;
}

В поле зрения

{{$weekArray['start']}} : {{$weekArray['end']}} 

Я не могу чтобы получить диапазон предыдущей недели и даты его начала и окончания. Я много искал решения, но не помог.

Пожалуйста, помогите. Заранее спасибо

1 Ответ

1 голос
/ 13 января 2020

Попробуйте код ниже. Это работает для вас. Я изменил функцию getStartAndEndDate().

public function getStartAndEndDate($week, $year) 
{
    //Below gives week from mon to sun
    $weeks = [];
    $dto = new DateTime();
    $dto->setISODate($year, $week);    
    for($i=0;$i<=5;$i++) {               
        $weeks[$i]['start'] = $dto->format('Y-m-d');        
        $dto->modify('+6 days');        
        $weeks[$i]['end'] = $dto->format('Y-m-d');        
        $dto->modify('-13 days');   
    }
    return array_reverse($weeks);
}

=> ВЫХОД

Array
(
    [0] => Array
        (
            [start] => 2019-12-09
            [end] => 2019-12-15
        )

    [1] => Array
        (
            [start] => 2019-12-16
            [end] => 2019-12-22
        )

    [2] => Array
        (
            [start] => 2019-12-23
            [end] => 2019-12-29
        )

    [3] => Array
        (
            [start] => 2019-12-30
            [end] => 2020-01-05
        )

    [4] => Array
        (
            [start] => 2020-01-06
            [end] => 2020-01-12
        )

    [5] => Array
        (
            [start] => 2020-01-13
            [end] => 2020-01-19
        )

)
...