[英]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);
它將返回:
[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
我相信這就是它的工作方式。 如果您想包含不等於完整期間的最后日期,則必須自行添加。
$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);
}
});
$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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.