列出从周一到周日的每周碳排放

时间:2017-04-20 12:27:11

标签: php date php-carbon

我正在尝试使用PHP的Carbon库来获取一个月内的所有星期和星期几。我想编制一个数组,比如说当前月份,就像这样:

array(
    'April' => array(
        array(
            '2017-04-03',  // Monday
            '2017-04-04',  // Tuesday
            '2017-04-05',  // Wednesday
            '2017-04-06',  // Thursday
            '2017-04-07',  // Friday
            '2017-04-08',  // Saturday
            '2017-04-09',  // Sunday
        ),

        array(
            '2017-04-10',  // Monday
            '2017-04-11',  // Tuesday
            '2017-04-12',  // Wednesday
            '2017-04-13',  // Thursday
            '2017-04-14',  // Friday
            '2017-04-15',  // Saturday
            '2017-04-16',  // Sunday
        ),

        array(
            '2017-04-17',  // Monday
            '2017-04-18',  // Tuesday
            '2017-04-19',  // Wednesday
            '2017-04-20',  // Thursday
            '2017-04-21',  // Friday
            '2017-04-22',  // Saturday
            '2017-04-23',  // Sunday
        ),

        array(
            '2017-04-24',  // Monday
            '2017-04-25',  // Tuesday
            '2017-04-26',  // Wednesday
            '2017-04-27',  // Thursday
            '2017-04-28',  // Friday
            '2017-04-29',  // Saturday
            '2017-04-30',  // Sunday
        ),
    ),
);

我试过这个:

for($i = 1; $i <= 4; $i++) {
    $carbon = new Carbon(new Carbon('2017-04-03'), 'Europe/Sarajevo');
    $model[] = $carbon->addWeeks($i);
}

但是,由于我手动设置了日期,因此无法满足我的需求。当然,我可以利用strtotime('First Monday of MonthName Year');的力量,但这也无助于我找出构成一周数周的逻辑,就像我上面所描述的那样。

编辑:基本上,我想要的是列出从给定月份的第一个星期一到最后一个星期日开始的所有星期,即。当前,并将其组成如上所述的数组。

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

$month = "04";
$carbon = new Carbon(new Carbon(date('Y-m-d', strtotime('next monday', strtotime('2017-' . $month . '-01'))), 'Europe/Sarajevo');
$weeks_array = [];

while (intval($carbon->month) == intval($month)){
    $week_array[$carbon->weekOfMonth][ $carbon->dayOfWeek ] = $carbon->toDateString();
    $carbon->addDay();
}