在php中使用foreach时,字符串格式的所有月份显示不正确

在php中使用foreach时,字符串格式的所有月份显示不正确,php,date,Php,Date,下面我使用foreach循环打印所有月份,比如一月到十二月 foreach(range(1,12) as $i) { echo $pmoth =date("F", mktime(0,0,0,$i)); } 参考屏幕截图:在屏幕截图中显示三月,而不是二月 Pass date参数在最后一种情况下,它采用当前日期(30),因此对于2月份它是无效的日期。这就是为什么它显示三月 foreach(range(1,12) as $i) { echo $pmoth =date("F", mktime(0,

下面我使用foreach循环打印所有月份,比如一月到十二月

foreach(range(1,12) as $i)
{
 echo $pmoth =date("F", mktime(0,0,0,$i));
}
参考屏幕截图:在屏幕截图中显示三月,而不是二月


Pass date参数在最后一种情况下,它采用当前日期(30),因此对于2月份它是无效的日期。这就是为什么它显示三月

foreach(range(1,12) as $i)
{
 echo $pmoth =date("F", mktime(0,0,0,$i,1));
}

您可以执行以下操作。这是一个多一点的代码,但它看起来好多了

$period = new DatePeriod(
    new DateTime('2018-01-01'), 
    new DateInterval('P1M'),
    new DateTime('2019-01-01')
);

foreach ($period as $dt) {
    echo $dt->format('F') . PHP_EOL;
}