PHP 遍历时间段内的所有日期
阅读(8804)结合使用DateInterval
、DatePeriod
等,就能轻易实现从某个时间段之间的所有日期,不用考虑繁琐的跨年、跨月、闰年等问题了。这种场景在一些数据报表的需求中常见,比如需要列举从XX月YY日到XX月ZZ日的每一天的用户访问数据。
代码如下:
$begin = new \DateTime( '2015-08-31' );
$end = new \DateTime( '2015-09-02' );
$end = $end->modify( '+1 day' ); // 不包含结束日期当天,需要人为的加一天
$interval = new \DateInterval('P1D');
//$interval = \DateInterval::createFromDateString('1 day'); // 等同于上一条
// 如果第4个参数为\DatePeriod::EXCLUDE_START_DATE,则不包含开始日期当天
$daterange = new \DatePeriod($begin, $interval ,$end);
foreach($daterange as $date){
echo $date->format("Ymd") . "<br>";
}
echo '<pre>';
$dates = iterator_to_array($daterange);
print_r($dates);
echo '</pre>';
输出结果为:
20150831 20150901 20150902 Array ( [0] => DateTime Object ( [date] => 2015-08-31 00:00:00.000000 [timezone_type] => 3 [timezone] => PRC ) [1] => DateTime Object ( [date] => 2015-09-01 00:00:00.000000 [timezone_type] => 3 [timezone] => PRC ) [2] => DateTime Object ( [date] => 2015-09-02 00:00:00.000000 [timezone_type] => 3 [timezone] => PRC ) )