在Laravel中将日期范围划分为月份范围



例如,我有一个这样的开始和结束日期:

输入:

$startDate = 2022-01-03
$endDate = 2022-03-03

我想要的输出是:

[0] => Array
(
[start] => 2022-01-03
[end] => 2022-01-31
)
[1] => Array
(
[start] => 2022-02-01
[end] => 2022-02-28
)
[2] => Array
(
[start] => 2022-03-01
[end] => 2022-03-03
)

这应该有效。。。

$startDate = CarbonCarbon::parse('2022-01-03')->format('Y-m-d');
$endDate = CarbonCarbon::parse('2022-03-03')->format('Y-m-d');
$period = CarbonCarbonPeriod::create($startDate, '1 month', $endDate);

$p = array();
foreach ($period as $date) {
$p[] = (object)[
"start"=> ($date->firstOfMonth()->gt($startDate)) ? $date->firstOfMonth()->toDateString(): $startDate, 
"end"=> ($date->lastOfMonth()->lt($endDate)) ? $date->lastOfMonth()->toDateString() : $endDate
];

}
print_r($p);

最新更新