为了账号安全,请及时绑定邮箱和手机立即绑定

我在PHP中有2个日期,如何运行foreach循环来遍历所有这些日子?

我在PHP中有2个日期,如何运行foreach循环来遍历所有这些日子?

PHP
白猪掌柜的 2019-10-05 13:38:03
我以日期开始,以2010-05-01结束2010-05-10。如何在PHP中迭代所有这些日期?
查看完整描述

4 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

需要PHP5.3:


$begin = new DateTime('2010-05-01');

$end = new DateTime('2010-05-10');


$interval = DateInterval::createFromDateString('1 day');

$period = new DatePeriod($begin, $interval, $end);


foreach ($period as $dt) {

    echo $dt->format("l Y-m-d H:i:s\n");

}

这将在$start和之间的定义时间段内输出所有天数$end。如果要包括第10个,则设置$end为第11个。您可以根据自己的喜好调整格式。参见PHP Manual for DatePeriod。


查看完整回答
反对 回复 2019-10-05
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

这还包括最后日期


$begin = new DateTime( "2015-07-03" );

$end   = new DateTime( "2015-07-09" );


for($i = $begin; $i <= $end; $i->modify('+1 day')){

    echo $i->format("Y-m-d");

}

如果您不需要最后日期,只需=从条件中删除即可。


查看完整回答
反对 回复 2019-10-05
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

转换为unix时间戳使在php中进行日期数学更容易:


$startTime = strtotime( '2010-05-01 12:00' );

$endTime = strtotime( '2010-05-10 12:00' );


// Loop between timestamps, 24 hours at a time

for ( $i = $startTime; $i <= $endTime; $i = $i + 86400 ) {

  $thisDate = date( 'Y-m-d', $i ); // 2010-05-01, 2010-05-02, etc

}

在具有DST的时区使用PHP时,请确保添加的时间不是23:00、00:00或1:00,以防止跳过或重复几天。


查看完整回答
反对 回复 2019-10-05
?
largeQ

TA贡献2039条经验 获得超7个赞

$startTime = strtotime('2010-05-01'); 

$endTime = strtotime('2010-05-10'); 


// Loop between timestamps, 1 day at a time 

$i = 1;

do {

   $newTime = strtotime('+'.$i++.' days',$startTime); 

   echo $newTime;

} while ($newTime < $endTime);

要么


$startTime = strtotime('2010-05-01'); 

$endTime = strtotime('2010-05-10'); 


// Loop between timestamps, 1 day at a time 

do {

   $startTime = strtotime('+1 day',$startTime); 

   echo $startTime;

} while ($startTime < $endTime);


查看完整回答
反对 回复 2019-10-05
  • 4 回答
  • 0 关注
  • 731 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信