CarbonPeriod 不返回不完整的天数
CarbonPeriod is not returning incomplete days
我想分成几天:
2021-03-23T00:00:00Z
2021-03-24T23:00:00Z
代表1天1小时
如果我尝试用这些做一个碳周期:
$periods = CarbonPeriod::create($start, "1 day", $end);
会return:
[0] = 2021-03-23T00:00:00Z
[1] = 2021-03-24T00:00:00Z
我会减去 1 小时。
我应该怎么做才能做到return:
[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();
我想分成几天:
2021-03-23T00:00:00Z
2021-03-24T23:00:00Z
代表1天1小时
如果我尝试用这些做一个碳周期:
$periods = CarbonPeriod::create($start, "1 day", $end);
会return:
[0] = 2021-03-23T00:00:00Z
[1] = 2021-03-24T00:00:00Z
我会减去 1 小时。
我应该怎么做才能做到return:
[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();