我需要按日期范围划分所有数字月份。因此,对于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。
我是朝着正确的方向前进的吗?
答案 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