列表开始&;一年中每个星期的结束日期是动态的


List start & end date of each week in a year dynamically

如何动态获取一年中所有周的列表以及每周的开始和结束日期?

每周的一天应从周一开始

提前感谢:)

代码:

$year = 2016;
$weeksOfYear = new DatePeriod(
    new DateTime("$year-1 monday"),
    new DateInterval('P1W'),
    new DateTime("$year-12-31")
);
$weekCounter = 1;
foreach ($weeksOfYear as $startOfWeek) {
    echo "Week $weekCounter => "
        . "(start): "
        . $startOfWeek->format('Y-m-d')
        . " - (end): "
        . $startOfWeek->modify('+6 days')->format('Y-m-d')
        . "<br>";
    $weekCounter ++;
}

输出:

Week 1 => (start): 2016-01-04 - (end): 2016-01-10
Week 2 => (start): 2016-01-11 - (end): 2016-01-17
Week 3 => (start): 2016-01-18 - (end): 2016-01-24
...
Week 51 => (start): 2016-12-19 - (end): 2016-12-25
Week 52 => (start): 2016-12-26 - (end): 2017-01-01
    $weeks_arr = array();
    $temp1 = Carbon::now();
    $temp2 = Carbon::now();
    $start_date = $temp1->startOfWeek()->subYear()->addDay();
    $end_date = $temp2->endOfWeek()->addWeek();
    if ($start_date->weekOfYear != $end_date->weekOfYear) {
        $start_date->addWeek();
    }
    while ($start_date < $end_date) {
        $weeks_arr[$start_date->weekOfYear]['week'] = $start_date->weekOfYear;
        $weeks_arr[$start_date->weekOfYear]['start'] = $start_date->startOfWeek()->format('Y-m-d');
        $weeks_arr[$start_date->weekOfYear]['end'] = $start_date->endOfWeek()->format('Y-m-d');
        $start_date->addWeek();
    }
    return $weeks_arr;