【问题标题】:Carbon loop through specific date range misses one day通过特定日期范围的碳循环错过了一天
【发布时间】:2017-12-15 15:09:21
【问题描述】:

解决方案:

 $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) 上周一显示为日期结束:

我在这里错过了什么?

编辑 1:发现一些关于 CarbonInterval::week() 的有趣内容,它具有一些属性。会不会是first_last_day_of? :

【问题讨论】:

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


    【解决方案1】:

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

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

    然后你就可以得到日期了。

    【讨论】:

    • 我接受这个作为答案。我的最终解决方案是像这样修改我的parse Carbon::parse("Last Monday of January 2018")-&gt;addSecond(1)
    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    相关资源
    最近更新 更多