【问题标题】:how to get last 5 week range and its start and end dates in php/ laravel如何在 php/laravel 中获取过去 5 周的范围及其开始和结束日期
【发布时间】:2020-01-13 11:38:32
【问题描述】:

我想要周范围的开始和结束日期最后 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']}} 

我无法获得前一周的范围及其开始和结束日期。我搜索了很多解决方案,但没有帮助。

请帮忙。在此先感谢

【问题讨论】:

  • 不知道在 laravel 中,但在 PHP 中将值存储在 $weekArray[] 之类的数组中,在视图端使用 foreach 或 for 循环,您可以获得所有值。
  • 那么您将不得不多次调用该函数来获取范围。一个循环!
  • 一周的开始日期是否应该始终是星期一
  • @RiggsFolly 是循环。但是不知道怎么做?我应该检查哪些输入和条件。一周只从星期一开始

标签: php laravel date datetime php-carbon


【解决方案1】:

试试下面的代码。它为你工作。 我已经更改了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
        )

)

【讨论】:

  • 建议:将return $weeks; 更改为return array_reverse($weeks);,数组将按照OP 在问题中要求的顺序排列:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 2010-11-19
  • 1970-01-01
相关资源
最近更新 更多