【问题标题】:Find every [ 1st,2nd,3rd ] day of week using carbon For next 15 day使用碳查找一周中的每一天 [1st,2nd,3rd] 对于接下来的 15 天
【发布时间】:2019-10-14 21:27:07
【问题描述】:

使用carbon 查找一周中每个 [ 1st,2nd,3rd ] 天的日期,以查找接下来的 15 天。

有没有类似Carbon中momentjs的方法

下面展示了使用momentjs的相同示例。

momementObj.recur().every([1, 2, 3, 4, 5]).daysOfWeek();

【问题讨论】:

  • day 表示你想返回 date 对吗?
  • 是的,我的意思是日期

标签: php laravel


【解决方案1】:

我认为您需要这部分文档:https://carbon.nesbot.com/docs/#api-week

例如一周:

$en = CarbonImmutable::parse('2017-02-05');
var_dump($en->week(1)->format('Y-m-d H:i')); //string(16) "2017-01-01 00:00"
var_dump($en->week(6)->format('Y-m-d H:i')); //string(16) "2017-01-06 00:00"

请检查文档是否清楚,如果您需要进一步说明,请发表评论。

工作日从 0 到 6

【讨论】:

    【解决方案2】:

    我不认为 Carbon 有这个开箱即用的功能,但是使用像这样的出色工具,您可以使用 CarbonPeriod 来实现这一点,请参阅:https://carbon.nesbot.com/docs/#api-period。你可以得到这样的结果:

    use Carbon\CarbonPeriod;
    ...
    
    function dateInRange(array $days_of_week = [1,2,3], int $in_days = 15)
    {
        $days = CarbonPeriod::create(Carbon::now(), Carbon::now()->addDay($in_days));
    
        $result = [];
        /**
         * @var Carbon $carbon
         */
        foreach ($days as $carbon) { //This is an iterator
            if (in_array($carbon->dayOfWeek, $days_of_week, true)) {
                $result[] = $carbon->format('Y-m-d D');
            }
        }
    
        return $result;
    }
    
    • $days 为您提供碳周期,即 Iterator
    • 允许您遍历两个日期之间的每个“期间”
    • 然后在填充初始数组时迭代它们时进行检查
    • 您可以简单地将$carbon 作为循环内的 Carbon 实例返回,而不是对其进行格式化(我只是为了演示它返回星期几)

    PS:默认情况下,在 Carbon 中,0 是星期日,1 是星期一……以此类推。

    【讨论】:

      猜你喜欢
      • 2018-02-07
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      相关资源
      最近更新 更多