2016-04-14 3 views
0

В результате поиска я нашел, что следующая простая логика отлично работает для обеспечения того, чтобы два временных диапазона не перекрывались.Хороший способ обеспечить несколько неперекрывающихся диапазонов времени

(StartA <= EndB) and (EndA >= StartB) 

Но он начинает обременительно (с моим текущим подходом), если мне нужно использовать много диапазонов времени. Многие заявления If и такие.

Так что же лучше? Я думал о заполнении массивов, соответствующих 15-минутным интервалам «времени» и выполнению проверки, если эти места массива «заняты» при добавлении нового временного диапазона.

Это будет использование javascript, поэтому я не знаю, являются ли массивы наиболее подходящими/легкими.

ответ

1

Простым способом было бы сохранить даты в массиве, отсортировать его по дате начала, а затем проверить, совпадают ли даты. Вот пример:

var dates = []; 
var addDate = function(start, end){ 
    dates.push({start: start, end: end}); 
}; 
var datesOverlap = function(){ 
    var i; 
    dates.sort(function(a, b){ return a.start-b.start;}); 
    for(i=0; i<dates.length-1; i++){ 
    if(dates[i].end >= dates[i+1].start){ 
     return true; // dates overlap 
    } 
    } 
    return false; // no dates overlap 
}; 

Добавить все даты вы хотите проверить с помощью функции addDate. Затем вы вызываете функцию datesOverlap, чтобы проверить, не совпадают ли какие-либо даты.

+0

Похоже, действительно облегченное решение, спасибо! – Burninrock24

Смежные вопросы