js 24小时制 给定多个时间段 计算剩下的时间段 优化
toMinites(time){
let mins= null
let times=time.split(':')
mins=parseInt(times[0])*60+parseInt(times[1])
return mins
}
toHHmmFormat(minutes){
let h= null
let m=null
if(minutes){
h=('0'+parseInt(minutes/60)).slice(-2)
m=('0'+( minutes % 60)).slice(-2)
}
return [h,m].join(':')
}
formateTime(selectedTime){
let newSelectTime=[...selectedTime]
selectedTime.forEach((item,index)=>{
if(
this.toMinites(item.startTime)>this.toMinites(item.endtTime)&&
this.toMinites(item.endtTime)!=0
){
newSelectTime.splice(index,1)
newSelectTime.push({
startTime:item.startTime,
endtTime:'00:00'
})
newSelectTime.push({
startTime:'00:00',
endtTime:item.endtTime,
})
}
})
console.log(newSelectTime);
return newSelectTime
}
vaiiatorTimeTimeIsOverlapping(selectedTime,currentTime){
let arr=[]
let flag=false
let newArr=[...selectedTime]
if(currentTime){
newArr.push({
startTime:currentTime[0],
endtTime:currentTime[1]
})
}
let newSelectTime=this.formateTime(newArr)
newSelectTime.forEach(item=>{
if(
this.toMinites(item.startTime)==this.toMinites(item.endtTime)&&
newSelectTime.length !== 1
){
flag=true
}
arr.push([this.toMinites(item.startTime),this.toMinites(item.endtTime)])
})
arr.sort(function(a,b){
return a[0]-b[0]
})
arr.forEach((item,index)=>{
if(index==arr.length-1) return
if(item[1]>arr[index+1][0]){
flag=true
}
})
return flag
}
unselectTime(selectedTime){
let arr =[...selectedTime]
let newSelectTime =this.formateTime(arr)
let timeArr = []
let unselectTime = []
if(newSelectTime && newSelectTime.length){
for(let i=0;i<newSelectTime.length;i++){
if(
this.toMinites(newSelectTime[i].startTime)==this.toMinites(newSelectTime[i].endtTime)
){
return unselectTime
}
timeArr.push([this.toMinites(newSelectTime[i].startTime),this.toMinites(newSelectTime[i].endtTime)])
}
}
timeArr.sort(function (a,b) {
return a[0] - b[0]
})
debugger
if(timeArr.length){
if(timeArr[0][0]!==0){
unselectTime.unshift({
startTime:'00:00',
endtTime:this.toHHmmFormat(timeArr[0][0])
})
}
for(let i=0;i<timeArr.length;i++){
if( i+1 > timeArr.length-1){
continue
}
if(timeArr[i][1]== timeArr[i+1][0]){
continue
}
unselectTime.push({
startTime:this.formateTime(timeArr[i][1]),
endtTime:this.toHHmmFormat(timeArr[i+1][0])
})
}
if(timeArr[timeArr.length-1][1]!==0){
unselectTime.push({
endtTime:this.toHHmmFormat(timeArr[timeArr.length-1][1]),
startTime:'00:00',
})
}
if(
unselectTime.length &&
unselectTime[0].startTime=='00:00'&&
unselectTime[unselectTime.length-1].endtTime=='00:00'
){
let startTime=unselectTime[unselectTime.length-1].startTime
let endtTime = unselectTime[0].endtTime
unselectTime.splice(0,1)
unselectTime.splice(unselectTime.length-1,1)
unselectTime.push({
startTime,
endtTime
})
}
}
return unselectTime
}