遍历某个日期范围内的所有月份?
如果我有一个开始日期(比如说)和一个结束日期(比如说),我该如何创建一个循环来遍历范围内的所有日期(月)?2009-02-01
2010-01-01
如果我有一个开始日期(比如说)和一个结束日期(比如说),我该如何创建一个循环来遍历范围内的所有日期(月)?2009-02-01
2010-01-01
尝试
$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
DateTime、DateInterval 和 DatePeriod 类组合的示例:
$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;
}