【问题标题】:List weeks in month from Monday to Sunday in Carbon在 Carbon 中列出从星期一到星期日的月份周数
【发布时间】:2017-04-20 12:27:10
【问题描述】:

我正在尝试使用 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'); 的强大功能,但这也无助于我想出一个逻辑来组成一个星期数组,就像我上面描述的那样。


编辑:基本上,我想要列出从给定月份的第一个星期一到最后一个星期日的所有周,即。当前,并将其组合为我上面描述的数组。

【问题讨论】:

    标签: php date php-carbon


    【解决方案1】:

    你可以试试这个:

    $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();
    }
    

    【讨论】:

    • 不,它不是从给定月份的第一个星期一开始的,4 月的第一个星期一是 3 号。
    • 要获取当前月份的第一天,请尝试 $firstDayOfMonth = Carbon::now()->setDay(1);
    猜你喜欢
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 2012-11-27
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    相关资源
    最近更新 更多