一、需求
可以有多个时间段(hh:mm),添加下一个时间段以及提交时需要判断各个时间段不能交叉,如下图:
let dateAr = [
{ s: '02:00', e: '03:00' },
{ s: '03:00', e: '04:01' },
{ s: '05:00', e: '06:00' },
{ s: '07:00', e: '08:00' }
]
function Fn() {
for (let k in dateAr) {
if (!judege(k)) {
return false
}
}
return true
}
function judege(idx) {
for (let k in dateAr) {
if (idx !== k) {
if (dateAr[k].s <= dateAr[idx].s && dateAr[k].e > dateAr[idx].s) {
return false
}
if (dateAr[k].s < dateAr[idx].e && dateAr[k].e >= dateAr[idx].e) {
return false
}
}
}
return true
}
console.log(Fn()) //true的话表示没有重叠,false表示有重叠
注意:
涉及到时间字符串直接比较大小
当日期或者时间字符串正规时(yyyy-MM-dd HH:mm:ss 或 部分拆分)可以直接比较大小
// 以下全都返回 true
console.log("01:10" > "01:01");
console.log("2023-03-21" > "2023-03-20");
console.log("2023-03-21 01:10" > "2023-03-20 01:01");
console.log("2023-03-21 01:10:00" > "2023-03-20 01:01:00");
当日期或者时间字符串不正规时
// 以下全都返回 true 但都是错误的
console.log("2023-03-4" > "2023-03-21");
console.log("2023-03-4 01:10" > "2023-03-21 01:01");
console.log("2023-03-4 01:10:00" > "2023-03-21 01:01:00");