我在PHP中有两个日期时间:
2017-06-14 13:00:00
2017-06-30 20:00:00
我想打开循环中每30分钟的时间,如下所示:
2017-06-14 13:00:00
2017-06-14 13:30:00
2017-06-14 14:00:00
2017-06-14 14:30:00
2017-06-14 15:00:00
2017-06-14 15:30:00
2017-06-14 16:00:00
2017-06-14 16:30:00
2017-06-14 17:00:00
2017-06-14 17:30:00
2017-06-14 18:00:00
2017-06-14 18:30:00
2017-06-14 19:00:00
2017-06-14 19:30:00
2017-06-14 20:00:00
截至6月30日的最后日期。我正在使用while循环并打印时差。请在下面找到我的代码。
$start_date = date("Y-m-d H:i:s", strtotime($_REQUEST["fromdate"]." ".$_REQUEST["fromtime"]));
$end_date = date("Y-m-d H:i:s", strtotime($_REQUEST["todate"]." ".$_REQUEST["totime"]));
while(strtotime($start_date) < strtotime($end_date)){
$start_date = date("Y-m-d H:i:s", strtotime("+30 minutes", strtotime($start_date)));
}
无论时间和关系如何,我都会得到一天中的所有时间。我希望时间只从下午1点到晚上8点。任何帮助将不胜感激。提前致谢
答案 0 :(得分:1)
试试这样:
$start = new DateTime('2017-06-14 13:00:00');
$end = new DateTime('2017-06-30 20:00:00');
$startHour = $start->format('H');
$endHour = $end->format('H');
while ($start <= $end){
$startDay = clone $start;
$startDay->setTime($startHour, 0, 0);
$endDay = clone $start;
$endDay->setTime($endHour, 0, 0);
if ($start >= $startDay && $start <= $endDay){
echo $start->format('Y-m-d H:i:s') . '<br />';
}
$start->modify('+30 minutes');
}