遍历某个日期范围内的所有月份?

2022-08-30 11:44:07

如果我有一个开始日期(比如说)和一个结束日期(比如说),我该如何创建一个循环来遍历范围内的所有日期(月)?2009-02-012010-01-01


答案 1

尝试

$start = $month = strtotime('2009-02-01');
$end = strtotime('2011-01-01');
while($month < $end)
{
     echo date('F Y', $month), PHP_EOL;
     $month = strtotime("+1 month", $month);
}

注意笔记 http://php.net/manual/de/datetime.formats.relative.php

相对月份值是根据它们经过的月份长度计算的。例如,“+2 月 2011-11-30”,这将产生“2012-01-30”。这是因为11月的长度为30天,而12月的长度为31天,总共产生61天。

从 PHP5.3 开始,您可以使用 http://www.php.net/manual/en/class.dateperiod.php


答案 2

DateTimeDateIntervalDatePeriod 类组合的示例:

$start = new DateTime('2009-02-01');
$interval = new DateInterval('P1M');
$end = new DateTime('2011-01-01');
$period = new DatePeriod($start, $interval, $end);

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

推荐