【已解决】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>
相关推荐
Csvn6 小时前
WASM
前端
修己xj7 小时前
我用 AI 给自己写了一个 Markdown 编辑器,然后把它开源了
前端
FRing038 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
幸运小猿8 小时前
模拟慢上传-处理超时重试image 丢失线上问题
前端·javascript·html
moshuying9 小时前
网购能买Token了!
前端
h_654321010 小时前
echarts实现柱状图加一条横线
前端·echarts
风骏时光牛马10 小时前
生成一个后端标题,只需要一个标题,不需要其他的任何文本。
前端
子非鱼@Itfuture10 小时前
关于前后端联调中登录状态/登录信息失效?
java·前端
郭小李10 小时前
openFeign入门
java·开发语言·前端
馒头不想说话10 小时前
AI当运营,帮你省人力
前端