我想生成时隙,DateInterval
当我在午夜(00:00)选择结束时段时遇到问题。
如果我的结束时间是“23:59”,一切都会产生。
这是我的输入变量代码:
$duration = 30; // duration interval<br>
$start = '22:00'; // start period<br>
$end = '02:00'; // end period<br>
function generateTimeSlots($duration, $start, $end) {
$start = new DateTime($start);
$end = new DateTime($end);
$interval = new DateInterval("PT" . $duration . "M");
$periods = array();
for ($intStart = $start; $intStart < $end; $intStart->add($interval)) {
$endPeriod = clone $intStart;
$endPeriod->add($interval);
if ($endPeriod > $end) {
$endPeriod = $end;
}
$periods[] = $intStart->format('H:i A');
}
return $periods;
}
$duration = 30;
$start = '22:00'; // 10:00 PM
$end = '02:00'; // 02:00 AM
print_r( generateTimeSlots($duration, $start, $end) );
预计输出:
22:00 PM
22:30 PM
23:00 PM
23:30 PM
00:00 PM
00:30 PM
01:00 PM
01:30 PM
02:00 PM
如果我的结束期结束,则不会生成任何时间段23:59
。
任何人都知道应该是什么问题?