PHP - strtotime() - 一个月的第一天问题

PHP - strtotime()- First Day of month problem

我有这个代码

$begin_date_2021_2022='01-09-2021';
for ($i=0; $i <5 ; $i++) { 
    $begin_date_2021_2022=date('d/m/Y',strtotime('+1 month', strtotime($begin_date_2021_2022))) ; 
    echo $begin_date_2021_2022."<br>";
} 

输出:

01/10/2021<br>
10/02/2021<br>
02/11/2021<br>
11/03/2021<br>
03/12/2021<br>

我的期望是

01/10/2021<br>
01/11/2021<br>
01/12/2021<br>
01/01/2022<br>
01/02/2022<br>

问题出在哪里?

当您在格式中使用 / 时,它采用美式日期。因此,您需要将破折号放入格式中才能正确添加。如果你想用/输出它,你可以按照我下面的方式来做。

$begin_date_2021_2022='01-09-2021';
for ($i=0; $i <5 ; $i++) { 
    $begin_date_2021_2022=date('d-m-Y', strtotime('+1 month',strtotime($begin_date_2021_2022))) ; 
    echo date('d/m/Y',strtotime($begin_date_2021_2022))."<br>";
} 

参考 https://www.php.net/manual/en/function.strtotime.php