PHP时间范围

时间:2017-06-13 17:27:09

标签: php

我需要一个用于收集时间的列表。用户将选择何时收集开始,结束以及这些时间之间的间隔。

如果我设置:

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);
        }

2 个答案:

答案 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);
}