我是靠谱客的博主 聪明皮带,最近开发中收集的这篇文章主要介绍前端过滤时间,选择有效的时间,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述
根据预订日期判断是不是今天,如果是今天则判断下列用餐时段
在这里插入图片描述
根据当前时间过滤可以用餐的时间
在这里插入图片描述
在根据用餐的时段分割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
}

最后

以上就是聪明皮带为你收集整理的前端过滤时间,选择有效的时间的全部内容,希望文章能够帮你解决前端过滤时间,选择有效的时间所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部