【问题标题】:CARBON Get all dates between date range using number of the weekdayCARBON 使用工作日数获取日期范围之间的所有日期
【发布时间】:2021-11-16 08:36:58
【问题描述】:

我有一个表示工作日数的数组,例如这个数组:

[1, 3, 5]

表示星期一、星期三和星期五,给定一个日期范围,我怎样才能得到该范围之间所有星期一、星期三和星期五的日期。

我正在使用带有 Carbon 的 Laravel。

【问题讨论】:

    标签: laravel php-carbon


    【解决方案1】:

    检查此代码:

    function weekDaysBetween($requiredDays, $start, $end){
        $startTime = Carbon::createFromFormat('d-m-Y', $start);
        $endTime = Carbon::createFromFormat('d-m-Y', $end);
    
        $result = [];
    
        while ($startTime->lt($endTime)) {
            
            if(in_array($startTime->dayOfWeek, $requiredDays)){
                array_push($result, $startTime->copy());
            }
            
            $startTime->addDay();
        }
    
        return $result;
    }
    
    

    你可以这样称呼它:

    weekDaysBetween([1,2, 3], "01-09-2021", "01-10-2021")
    

    结果会是这样的:

    [
        "2021-09-01T22:02:21.000000Z",
        "2021-09-06T22:02:21.000000Z",
        "2021-09-07T22:02:21.000000Z",
        "2021-09-08T22:02:21.000000Z",
        "2021-09-13T22:02:21.000000Z",
        "2021-09-14T22:02:21.000000Z",
        "2021-09-15T22:02:21.000000Z",
        "2021-09-20T22:02:21.000000Z",
        "2021-09-21T22:02:21.000000Z",
        "2021-09-22T22:02:21.000000Z",
        "2021-09-27T22:02:21.000000Z",
        "2021-09-28T22:02:21.000000Z",
        "2021-09-29T22:02:21.000000Z"
    ]
    

    【讨论】:

      【解决方案2】:

      您可以使用->daysUntil()->filter()

      function weekDaysBetween($requiredDays, $start, $end)
      {
        return CarbonImmutable::createFromFormat('d-m-Y', $start)
          ->daysUntil(CarbonImmutable::createFromFormat('d-m-Y', $end))
          ->filter(static fn (CarbonImmutable $date) => in_array($date->dayOfWeek, $requiredDays, true));
      }
      

      【讨论】:

        猜你喜欢
        • 2015-10-29
        • 1970-01-01
        • 1970-01-01
        • 2017-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多