判断指定星期是否在所选时间段内

132 阅读1分钟

vue dayjs


// main.js
// 全局注册dayjs
const dayjs = require('dayjs')
const isBetween = require('dayjs/plugin/isBetween') // 引入插件
dayjs.extend(isBetween)
Vue.prototype.$dayjs = dayjs


@params {任意时间格式}开始时间
@params {任意时间格式}结束时间
@params {任意时间格式}选择的星期

    checkWeekTool(开始时间,结束时间,选择的星期) {
      const START_TIME = this.$dayjs(开始时间).valueOf() // 开始时间:时间戳
      const END_TIME = this.$dayjs(结束时间).valueOf() // 结束时间:时间戳
      const START_WEEK = parseFloat(this.$dayjs(START_TIME).day()) // 开始时间的星期:Number
      const CHOOSE_WEEK = parseFloat(选择的星期) // 选择的星期:Number
      let nextChooseTime // 时间段内 下一个选择的星期:时间戳
      // 元祖映射关系
      const MAP = [
        [
          () => CHOOSE_WEEK > START_WEEK,
          () => { nextChooseTime = this.$dayjs(START_TIME).add(CHOOSE_WEEK - START_WEEK, 'day').valueOf() }
        ],
        [
          () => CHOOSE_WEEK < START_WEEK,
          () => { nextChooseTime = this.$dayjs(START_TIME).add(7 - START_WEEK + CHOOSE_WEEK, 'day').valueOf() }
        ],
      ]
      const TARGET = MAP.find(m => m[0]())
      if (TARGET) {
        TARGET[1]()
      } else {
        nextChooseTime = this.$dayjs(START_TIME).valueOf()
      }
      return this.$dayjs(nextChooseTime).isBetween(START_TIME, END_TIME, null, '[]')
    }