2016-04-14 40 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

相關問題