简体   繁体   English

Laravel。 碳周期。 两个日期之间的所有“单一”月份

[英]Laravel. CarbonPeriod. All "unical" months between two dates

How to make a period with all months between two random dates?如何在两个随机日期之间制作一个包含所有月份的时期? I tried:我试过了:

$startDate = \Carbon\Carbon::parse('2021-11-17 23:59:59');
$endDate = \Carbon\Carbon::parse('2022-01-10 00:00:00');

$period = \Carbon\CarbonPeriod::create($startDate, '1 month', $endDate);

foreach($period as $month)
{
    echo '<pre>'.$month->format('Y-m-d').'</pre>';
}

but it doesn't include January.但它不包括一月。

I also tried to use floor():我也尝试使用 floor():

$startDate = \Carbon\Carbon::parse('2021-11-17 23:59:59');
$endDate = \Carbon\Carbon::parse('2022-01-31 00:00:00');

$period = \Carbon\CarbonPeriod::create($startDate, '1 month', $endDate)->floor();

foreach($period as $month)
{
    echo '<pre>'.$month->format('Y-m-d').'</pre>';
}

but it includes February that don't even need.但它包括甚至不需要的二月。

How to get pure "unical" months between two dates using CarbonPeriod?如何使用 CarbonPeriod 在两个日期之间获得纯“单一”月份?

For example: start_date: 2021-11-17 23:59:59 & end_date: 2022-01-10 00:00:00 -> 11, 12, 01例如:开始日期:2021-11-17 23:59:59 &结束日期:2022-01-10 00:00:00 -> 11、12、01

Also: start_date: 2021-11-17 23:59:59 & end_date: 2022-01-31 00:00:00 -> 11, 12, 01另外:开始日期:2021-11-17 23:59:59 &结束日期:2022-01-31 00:00:00 -> 11、12、01

Thank you.谢谢你。

use startOfMonth() and endOfMonth() as below.使用startOfMonth()endOfMonth()如下。

    $startDate = Carbon::parse('2021-11-17 23:59:59')->startOfMonth();
    $endDate = Carbon::parse('2022-01-10 00:00:00')->endOfMonth();
    
    foreach (CarbonPeriod::create( $startDate, '1 month', $endDate) as $month) {
         echo  $month->format('m') . PHP_EOL;
    }

Output will be: 11 12 01 Output 将是:11 12 01

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM