通过搜索,我发现以下简单逻辑可以很好地确保两个时间范围不重叠。
(StartA <= EndB) and (EndA >= StartB)
但是,如果我需要使用许多时间范围,则开始变得麻烦(使用我目前的方法)。许多If语句等。
那么什么是更好的方法呢?我考虑过要填充与15分钟间隔的“时间”相对应的数组,并在添加新的时间范围时检查这些数组的位置是否被“占用”。
这将使用javascript,因此我不知道数组是否最合适/轻巧。
最佳答案
一种简单的方法是将日期存储在数组中,按开始日期对其进行排序,然后检查日期是否重叠。这是一个示例:
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
函数来检查是否有任何日期重叠。关于javascript - 确保多个非重叠时间范围的好方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36627370/