如何解决CarbonPeriod 不会返回不完整的天数 包括末尾的“2021-03-24T23:00:00Z”包括末尾的'2021-03-25T00:00:00Z'
我想分成几天:
2021-03-23T00:00:00Z
2021-03-24T23:00:00Z
代表 1 天 1 小时。
如果我尝试用这些来制作碳周期:
$periods = CarbonPeriod::create($start,"1 day",$end);
它会返回:
[0] = 2021-03-23T00:00:00Z
[1] = 2021-03-24T00:00:00Z
我将失去 1 小时。
我该怎么做才能让它回来:
[0] = 2021-03-23T00:00:00Z
[1] = 2021-03-24T00:00:00Z
[2] = 2021-03-24T00:23:00Z
或者如果不可能,至少:
[0] = 2021-03-23T00:00:00Z
[1] = 2021-03-24T00:00:00Z
[2] = 2021-03-25T00:00:00Z
解决方法
我相信这就是它的工作方式。如果您想包括不等于完整期间的最后日期,则必须自行添加。
包括末尾的“2021-03-24T23:00:00Z”。
$start = '2021-03-23T00:00:00Z';
$end = '2021-03-24T23:00:00Z';
$period = (new Carbon($start))->toPeriod($end); // default period is +1d
$periodArray = $period->toArray();
if (!last($periodArray)->is($end)) {
$periodArray[] = new Carbon($end);
}
最后几行可以用 tap()
$periodArray = tap($period->toArray(),function(&$array) use ($end) {
if (!last($array)->is($end)) {
$array[] = new Carbon($end);
}
});
包括末尾的'2021-03-25T00:00:00Z'
$start = '2021-03-23T00:00:00Z';
$end = '2021-03-24T23:00:00Z';
$period = (new Carbon($start))->toPeriod(
(new Carbon($end))->startOfDay()->is($end)
? $end
: (new Carbon($end))->addDays(1)
);
$periodArray = $period->toArray();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。