通过特定日期范围的碳循环错过了一天

时间:2017-12-15 15:09:22

标签: php laravel datetime laravel-5 php-carbon

解决方案:

 $mDatePeriod = new \DatePeriod(

          Carbon::parse("First Monday of January 2018"),
          CarbonInterval::week(),
          Carbon::parse("Last Monday of January 2018")->addSecond(1)
 );

我正在运行Laravel 5.0,我正在使用Carbon库来计算以下内容。

示例:

我希望 2018 的所有星期一 1月,所以我使用以下代码:

 $mDatePeriod = new \DatePeriod(

          Carbon::parse("First Monday of January 2018"),
          CarbonInterval::week(),
          Carbon::parse("Last Monday of January 2018")
 );

如果我循环通过$mDatePeriod并回应当天:

foreach($mDatePeriod as $currentDay){

 echo $currentDay->toDateString() . "<br/>";

}

输出将是:

2018-01-01
2018-01-08
2018-01-15
2018-01-22

这不是我所期待的,因为 2018-01-29 (上周一)失踪。

如果我使用dd($mDatePeriod_Day),则上个星期一显示为日期的结尾:

enter image description here

我在这里缺少什么?

编辑1:发现了一些有趣的 CarbonInterval :: week(),它有一些属性。可能是first_last_day_of吗? :

enter image description here

1 个答案:

答案 0 :(得分:2)

您可以做的是在最后一个条件中添加时间

Carbon::parse("Last Monday of January 2018 00:00:01")

然后你就可以得到约会。