У меня есть интересная проблема, должно быть весело решить.
Использование 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"
}
Спасибо за любые отзывы!