猿问

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

我以日期开始,以2010-05-01结束2010-05-10。如何在PHP中迭代所有这些日期?



白猪掌柜的
浏览 732回答 4
4回答

慕工程0101907

需要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。

慕桂英3389331

这还包括最后日期$begin = new DateTime( "2015-07-03" );$end&nbsp; &nbsp;= new DateTime( "2015-07-09" );for($i = $begin; $i <= $end; $i->modify('+1 day')){&nbsp; &nbsp; echo $i->format("Y-m-d");}如果您不需要最后日期,只需=从条件中删除即可。

扬帆大鱼

转换为unix时间戳使在php中进行日期数学更容易:$startTime = strtotime( '2010-05-01 12:00' );$endTime = strtotime( '2010-05-10 12:00' );// Loop between timestamps, 24 hours at a timefor ( $i = $startTime; $i <= $endTime; $i = $i + 86400 ) {&nbsp; $thisDate = date( 'Y-m-d', $i ); // 2010-05-01, 2010-05-02, etc}在具有DST的时区使用PHP时,请确保添加的时间不是23:00、00:00或1:00,以防止跳过或重复几天。

largeQ

$startTime = strtotime('2010-05-01');&nbsp;$endTime = strtotime('2010-05-10');&nbsp;// Loop between timestamps, 1 day at a time&nbsp;$i = 1;do {&nbsp; &nbsp;$newTime = strtotime('+'.$i++.' days',$startTime);&nbsp;&nbsp; &nbsp;echo $newTime;} while ($newTime < $endTime);要么$startTime = strtotime('2010-05-01');&nbsp;$endTime = strtotime('2010-05-10');&nbsp;// Loop between timestamps, 1 day at a time&nbsp;do {&nbsp; &nbsp;$startTime = strtotime('+1 day',$startTime);&nbsp;&nbsp; &nbsp;echo $startTime;} while ($startTime < $endTime);
随时随地看视频慕课网APP
我要回答