我需要一个用于收集时间的列表。用户将选择何时收集开始,结束以及这些时间之间的间隔。
如果我设置:
Start: 11:00
End: 20:00
Interval: 30
它会在11:00到20:00之间正确生成一个列表,间隔为30分钟......例如11:00, 11:30, 12:00, ... 19.00, 19.30, 20.00
现在问题,如果我设置:
Start: 20:00
End: 03:00
Interval: 30
它产生的下面的列表,时间倒退,从晚上8点到凌晨3点,它应该上升! 20:00, 19:30, 19:00, ... 04.00, 03.30, 03.00
我如何调整我的代码以使其始终上升?所以它产生了这些结果...... 20:00, 20:30, 21:00, ... 02.00, 02.30, 03.00
继承我的代码:
$collectTimes = array();
$range = range(strtotime($settingsCTS), strtotime($settingsCTE), $settingsCTI * 60);
foreach ($range as $time) {
$collectTimes[] = date("H:i", $time);
}
答案 0 :(得分:2)
我认为代码是不言自明的,我真的没什么好说的了。)
$start = "20:00";
$end = "03:00";
$interval = 30;
$temp = null;
$intervals = [date("H:i",strtotime($start))];
while ( $temp !== date("H:i",strtotime($end)) ) {
$temp = date("H:i",strtotime($start." + $interval minutes"));
array_push($intervals,$temp);
$interval += 30;
}
答案 1 :(得分:2)
$startTime = strtotime('20:00');
$endTime = strtotime('03:00');
$interval = 30;
if ($endTime < $startTime) {
$endTime += 60 * 60 * 24;
}
$collectTimes = array();
$range = range($startTime, $endTime, $interval * 60);
foreach ($range as $time) {
$collectTimes[] = date("H:i", $time);
}