4 回答
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。
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");
}
如果您不需要最后日期,只需=从条件中删除即可。
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,以防止跳过或重复几天。
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);
- 4 回答
- 0 关注
- 731 浏览
添加回答
举报