php 时间段 遍历,PHP - 遍历时间段内的所有日期 - 开发哥

结合使用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") . "
";

}

echo '

';

$dates = iterator_to_array($daterange);

print_r($dates);

echo '

';

输出结果为:

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

)

)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值