簡體   English   中英

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);

它將返回:

[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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM