前端过滤时间,选择有效的时间

在这里插入图片描述
根据预订日期判断是不是今天,如果是今天则判断下列用餐时段
在这里插入图片描述
根据当前时间过滤可以用餐的时间
在这里插入图片描述
在根据用餐的时段分割30分钟供选择,切要考虑有可能是第二天跨天的选择
在这里插入图片描述

onChange() {
  this.form.reserveTimeId = ''
  this.selectdate = []
  let reserveTimeId = this.reserveTimeList
  let flterdate = []
  if (
    dayjs().format('YYYY-MM-DD') ==
    dayjs(this.form.Scheduleddate).format('YYYY-MM-DD')
  ) {
    reserveTimeId.filter((i) => {
      // 判断当前时间<用餐结束时段  ====符合
      // 当前时间 《活动开始时间》用餐时间======符合(避免跨天)
      if (
        parseInt(currenthour()) < parseInt(division(i.endTime)) ||
        (parseInt(currenthour()) < parseInt(division(i.startTime)) &&
          parseInt(currenthour()) > parseInt(division(i.endTime)))
      ) {
        flterdate.push(i)
      }
    })
    this.reserveTimeList = flterdate
  } else {
    this.reserveTimeList = this.reserveTimeList1
  }
},
  this.selectdate = []
  // 上方每次选择初始化到店时间和时段
  this.reserveTimeList.filter((i) => {
    if (i.mealId == val) {
      this.selectdate = format(i)
    }
  })
//接受11:20形式的参数返回1120
export const division = function (val) {
  const s = val.replace(/:/, '')
  return s
}

//返回年月日期的时分22:00 hh:mm 形式
export const currenthour = function () {
  let Datepick = new Date()
  return `${Datepick.getHours()}${
    Datepick.getMinutes() < 10
      ? '0' + Datepick.getMinutes()
      : Datepick.getMinutes()
  }`
}
//递归的时候判断是否超出时间
function settime(ss, end) {
  let s = new Date()
  s.setHours(parseInt(ss.split(':')[0]))
  s.setMinutes(parseInt(ss.split(':')[1]))
  let w = new Date()
  w.setHours(parseInt(end.split(':')[0]))
  w.setMinutes(parseInt(end.split(':')[1]))
  if (s.valueOf() < w.valueOf() || s.valueOf() == w.valueOf()) {
    return true
  } else {
    return false
  }
}
// 跨天计算
function settime1(ss, end) {
  let s = new Date()
  s.setHours(parseInt(ss.split(':')[0]))
  s.setMinutes(parseInt(ss.split(':')[1]))
  let w = new Date()
  w.setDate(s.getDate() + 1)
  w.setHours(parseInt(end.split(':')[0]))
  w.setMinutes(parseInt(end.split(':')[1]))
  if (s.valueOf() < w.valueOf() || s.valueOf() == w.valueOf()) {
    return true
  } else {
    return false
  }
}
// 时间加30分钟
function getform(star) {
  let s = new Date()
  s.setHours(parseInt(star.split(':')[0]))
  s.setMinutes(parseInt(star.split(':')[1]))
  s.setMinutes(s.getMinutes() + 30)
  return `${s.getHours()}:${
    s.getMinutes() < 10 ? '0' + s.getMinutes() : s.getMinutes()
  }`
}

let date = []
// 递归
function formatdate(star, end) {
  let ss = getform(star, end)
  //检测是否超出结束时间
  if (settime(ss, end)) {
    //过滤过期的到店时间
    // if (parseInt(currenthour()) < parseInt(division(end))) {
    //   console.log("跨天还计算这个吗")
    date.push(getform(star, end))
    // }
    formatdate(ss, end)
  }
  // 跨天处理
  if (parseInt(division(star)) > parseInt(division(end))) {
    if (settime1(ss, end)) {
      //过滤过期的到店时间
      date.push(getform(star, end))
      formatdate(ss, end)
    }
  }
}

export const format = function (i) {
  date = []
  formatdate(i.startTime, i.endTime)
  return date
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值