Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php/laravel中获取最后5周的范围及其开始和结束日期_Php_Laravel_Date_Datetime_Php Carbon - Fatal编程技术网

如何在php/laravel中获取最后5周的范围及其开始和结束日期

如何在php/laravel中获取最后5周的范围及其开始和结束日期,php,laravel,date,datetime,php-carbon,Php,Laravel,Date,Datetime,Php Carbon,我想要一周范围的开始和结束日期最后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(

我想要一周范围的开始和结束日期最后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']}} 
我无法获取前一周的范围及其开始和结束日期。我寻找了很多解决方案,但没有得到帮助


请帮忙。提前感谢

请尝试下面的代码。这对你有用。 我已更改了
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);
}

不知道在laravel中,但在PHP中,将值存储在数组中,如$weekArray[],在视图端使用foreach或for循环,您将获得所有值。然后,您将不得不多次调用函数获取范围。一圈!!本周的开始日期是否应始终为Monday@RiggsFolly是的。但我不知道怎么做?我应该检查哪些输入和条件。周从周一开始建议:更改
返回$weeks
返回数组\u反向($weeks)和数组将按照OP在问题中要求的顺序:)
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
        )

)