Объедините промежутки во временных диапазонах с 15-минутными приращениями - PullRequest
0 голосов
/ 28 августа 2018

У меня есть интересная проблема, должно быть весело решить.

Использование PHP7, но на самом деле подойдет любой язык, просто нужен твердый шаблон.

У нас есть приложение, которое позволяет пользователям добавлять расписание, расписание начинается с 00:00 и заканчивается на 23:45 с шагом 15 минут.

В результате мы получаем массив выбранных времен, и нам нужно сопоставить его с диапазонами с учетом пробелов, пробелы - моя проблема.

Итак, мне нужен шаблон / функция, которая будет возвращать массив объединенных временных диапазонов.

Например, следующие диапазоны:

00:00
00:15
00:30
00:45
01:00
<gap>
02:00
02:15
02:30

Будет уменьшено до:

00:00-1:00
02:00-02:30

и т.д.

Вот мой первый опыт:

$test = ['00:00','00:15','00:30','01:00','01:15','01:30','01:45','02:00','02:15','02:45'];

$inc = 15*60;

$start = $test[0];

for($x=0; $x<count($test); $x++) {

    if(strtotime($test[$x]) + $inc != strtotime($test[$x+1])) {

        if($test[$x] == '23:45') // special case
            $end = '23:59:59'; 
        else
            $end = date('H:i', strtotime($test[$x]) + $inc); // add back 15 minutes to capture full hour

        $final[] = $start . '-' . $end; 

        $start = $test[$x+1];
    }
}

var_dump($final);

Выходы:

array(3) {
  [0]=>
  string(11) "00:00-00:45"
  [1]=>
  string(11) "01:00-02:30"
  [2]=>
  string(11) "02:45-03:00"
}

Спасибо за любые отзывы!

...