如何循环PHP DatePeriod类的几个月?

时间:2014-06-13 15:27:01

标签: php datetime

我需要按日期范围划分所有数字月份。因此,对于2014年7月18日至2014年9月4日的范围,请给我7,8,9。

这让我走近了:

$start = new DateTime('2014-07-18');
$interval = new DateInterval('P1M');
$end = new DateTime('2014-09-04');
$period = new DatePeriod($start, $interval, $end);

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

它返回7和8,但9月没有9,因为它不是完整的P1M间隔。无论月末的开始/结束日期在哪里,我都希望得到7,8,9。

我是朝着正确的方向前进的吗?

1 个答案:

答案 0 :(得分:2)

在此页面上找到答案:http://forums.phpfreaks.com/topic/275341-find-what-months-a-date-range-covers/

$start = new DateTime('2014-07-18');
$end = new DateTime('2014-09-04');

$inc = DateInterval::createFromDateString('first day of next month');
$end->modify('+1 day');

$p = new DatePeriod($start,$inc,$end);

foreach ($p as $d)
 echo $d->format('n') . PHP_EOL;

输出:

7 8 9