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

js

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

//已经存在的时间的段  时间段不能有交集
let  arr=[['5:00','6:00'],['9:00','11:00'],['13:00','14:00'],['1:00','2:00'],['22:00','00:10']]  
//时间  排序
timeSort=(arr)=>{
  return arr.sort(function (a,b){
    return Date.parse(`2000/01/01 ${a[0]}:00`) -Date.parse(`2000/01/01 ${b[0]}:00`)
  })
}
// 如果存在 ['22:00','00:10']  这样格式的 转化为['22:00','23:59'] 和['00:00','00:10']
formatTime(){
  let newArr=[...arr]
  arr.forEach((item,index)=>{
    if(Date.parse(`2000/01/01 ${item[0]}:00`)>Date.parse(`2000/01/01 ${item[1]}:00`)){
      newArr.splice(index,1)
      newArr.push([item[0],'23:59'])
      newArr.push(['00:00',item[1]])
    }
  })
  console.log(newArr);
  return newArr
}

//计算方法
time = () => {
  let newArr = this.formatTime(arr)
   newArr= this.timeSort(newArr) // 时间段进行排序
   let aaa= Date.parse(`2000/01/01 00:00:00`)  //00:00
   let bbb = Date.parse(`2000/01/01 23:59:00`) // 24:00
   let leftTime=[]
   if(aaa<Date.parse(`2000/01/01 ${arr[0][0]}:00`)){
    let startTime = this.timeCheckout(aaa)
    let endTime = this.timeCheckout(Date.parse(`2000/01/01 ${arr[0][0]}:00`)-60000)
    leftTime.push(`${startTime}~${endTime}`)
   }
   newArr.forEach((item,index)=>{
     if(index==arr.length-1) return
     let startTime = this.timeCheckout(Date.parse(`2000/01/01 ${item[1]}:00`)+60000)
     let endTime = this.timeCheckout(Date.parse(`2000/01/01 ${newArr[index+1][0]}:00`)-60000)
     leftTime.push(`${startTime}~${endTime}`)
   })
   if(bbb>Date.parse(`2000/01/01 ${newArr[newArr.length-1][1]}:00`)){
    let endTime = this.timeCheckout(bbb)
    let startTime = this.timeCheckout(Date.parse(`2000/01/01 ${newArr[newArr.length-1][1]}:00`)+60000)
    leftTime.push(`${startTime}~${endTime}`)
   }
   console.log(leftTime);//剩余的时间段
   //["00:11~00:59", "02:01~04:59", "06:01~08:59", "11:01~12:59", "14:01~21:59"]
}


写的不好 请见谅 没有把字符串格式的时间 转化为时间错的方法 提出来

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值