js 24小时制 给定多个时间段 计算剩下的时间段

js 24小时制 给定多个时间段 计算剩下的时间段 优化

//入参 格式 unselectTime=[{ startTime:"1:00", endtTime:'3:00'}]
//返回数据 [{ startTime:"00:00", endtTime:'1:00'},{ startTime:"3:00", endtTime:'00:00'}]
//转化成分钟
  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
}







你可能感兴趣的:(react,js)