【已解决】el-date-picker type=“datetime“限制(动态)可选时间范围,精确到分钟!!!

文章目录

Vue2 + element ui

实现效果

code

html 复制代码
<template>
  <el-date-picker
    ref="datePicker"
    v-model="date"
    type="datetime"
    :picker-options="pickerOptions"
    placeholder="请选择日期时间"
    format="yyyy-MM-dd HH:mm"
    value-format="yyyy-MM-dd HH:mm"
    @change="changeTime"
  >
  </el-date-picker>
</template>

<script>
import dayjs from 'dayjs'
export default {
  data() {
    return {
      date: '',
      startTime: '2025-11-09 11:10:00',
      endTime: '2025-11-29 18:20:00',
    };
  },

  computed: {
  // 由于 onPick 方法只适用于 datetimerange
  // 所以在此使用 computed的方式来实现;
  // 当每次选中日期,重新计算禁用小时(selectableRange)
    pickerOptions() {
      const selectableRange = this.getSelectableRange(this.date)
      return {
        disabledDate: (date) => {
          const s = new Date(this.startTime).getTime()
          const e = new Date(this.endTime).getTime()
          return date.getTime() < s - 8.64e7 || date.getTime() > e
        },
        selectableRange
      }
    }
  },

  methods: {
    getSelectableRange(date) {
      if (dayjs(date).isSame('2025-11-09 11:00:00',  'day')) {
        return '11:00:00 - 23:59:59'
      }
      if (dayjs(date).isSame('2025-11-29 18:00:00',  'day')) {
        return '00:00:00 - 18:20:00'
      }
      return '00:00:00 - 23:59:59'
    },
    changeTime(date) {
      if (dayjs(date).isBefore(this.startTime, 'minutes')) {
        this.date = this.startTime
      }
      if (dayjs(date).isAfter(this.endTime, 'minutes')) {
        this.date = this.endTime
      }
    }
  },
};
</script>
相关推荐
wearegogog12317 小时前
基于 MATLAB 的卡尔曼滤波器实现,用于消除噪声并估算信号
前端·算法·matlab
Drawing stars17 小时前
JAVA后端 前端 大模型应用 学习路线
java·前端·学习
品克缤17 小时前
Element UI MessageBox 增加第三个按钮(DOM Hack 方案)
前端·javascript·vue.js
小二·17 小时前
Python Web 开发进阶实战:性能压测与调优 —— Locust + Prometheus + Grafana 构建高并发可观测系统
前端·python·prometheus
小沐°17 小时前
vue-设置不同环境的打包和运行
前端·javascript·vue.js
Irene199117 小时前
Vue3 <Suspense> 使用指南与注意事项
vue.js·suspense
qq_4198540518 小时前
CSS动效
前端·javascript·css
烛阴18 小时前
3D字体TextGeometry
前端·webgl·three.js
桜吹雪18 小时前
markstream-vue实战踩坑笔记
前端
南村群童欺我老无力.18 小时前
Flutter应用鸿蒙迁移实战:性能优化与渐进式迁移指南
javascript·flutter·ci/cd·华为·性能优化·typescript·harmonyos