这两天做一个课程表,涉及到用户选择课程时间,怎么样防止用户选择的课程时间冲突,参考了网上的一些方法,记录一下:
用户选择上课的时间是这样的一个形式 8:00~8:40 ,
用户后面的选择时间如果有8:30~9:10就是冲突了,解决的方法很简单,只要用户后面选择的起始时间都不在已经选择好了的时间范围就可以了。
思路:
1、声明一个空数组timeArr,用于存放用户选择的课程时间。
2、用户每次选择的时间 都先和数组timeArr里面的时间进行比较判断,不冲突就追加到数组里面。
首先我这里得到的用户选择的时间段是 8:00 、8:40这样的一个形式
//核心代码
var timeArr = [];
function compareTime(_time1,_time2){ //时间大小比较函数
var date = new Date();
var _t1 = _time1.split(":");
var _t2 = _time2.split(":");
return date.setHours(_t1[0], _t1[1]) > date.setHours(_t2[0], _t2[1]);
}
function judgeConfig( userStartTime,userEndTime ){ //时间大小比较函数
if(timeArr.length==0){
timeArr.push([userStartTime,userEndTime]);
}
for(var i = 0; i<timeArr.length; i++){
var confi1 = compareTime(userStartTime,timeArr[i][0]);
var confi2 = compareTime(userStartTime,timeArr[i][1]);
var confi3 = compareTime(userEndTime ,timeArr[i][0]);
var confi4 = compareTime(userEndTime ,timeArr[i][1]);
if(confi1 && !confi2 || confi3 && !confi4){
console.log("时间冲突了")
}else{
timeArr.push([userStartTime,userEndTime]);
}
}
}