一年中几周的碳清单

Carbon list of weeks in year

我一年有 return 周的功能:

function getWeek(){

    $today = \Carbon\Carbon::today();
    $date = $today->copy()->firstOfYear()->startOfDay();
    $eom = $today->copy()->endOfYear()->startOfDay();
  
    $dates = [];

    for($i = 1; $date->lte($eom); $i++){
        $startDate = $date->copy();
        while($date->dayOfWeek != \Carbon\Carbon::SUNDAY && $date->lte($eom)){
                $date->addDay(); 
            }
        
        $dates['w'.$i] = $startDate->format('d/m/Y') . ' - ' . $date->format('d/m/Y');
        $date->addDay();
    }
    
    return $dates;
}

函数 return 2022 年为 53 周,但 2022 年为 52 周。这是 return $dates

的结果

如何将函数更改为 return 第一个位置 return 一周的完整日期 (27/12/2021 - 02/01/2022) 并且在年份的最后一个位置相同

我想你错了。

w1->w53 = 52 weeks

此解决方案始终显示完整的周数。使用 ISO 8601 周数。 只有日期时间是必需的。为密钥添加了年份,以便它们始终是唯一的。

$year = date_create('today')->format('Y');
//remove comment next line for test's
//$year = 2001;

$dtStart = date_create('2 jan '.$year)->modify('last Monday');
$dtEnd = date_create('last monday of Dec '.$year);

for($weeks = [];$dtStart <= $dtEnd;$dtStart->modify('+1 week')){
  $key = $dtStart->format('W-Y');
  $from = $dtStart->format('d/m/Y');
  $to = (clone $dtStart)->modify('+6 Days')->format('d/m/Y');
  $weeks[$key] = $from.' - '.$to;
}

var_export($weeks);

由于不需要碳,你也可以测试一下here