当前位置: 首页 > news >正文

Vue3 + Element Plus 日期选择器:开始 / 结束时间,结束时间不超过今天

写一个完整可直接复制使用的示例,包含:

  • 开始时间 ≤ 结束时间
  • 结束时间最大只能选今天
  • 禁用逻辑联动(选完开始时间后,结束时间不能早于开始时间)
  • 支持date/daterange两种常用场景

完整代码(推荐:两个独立日期选择器)

<template> <div class="date-picker-box" style="display: flex; gap: 20px; margin: 20px;"> <!-- 开始时间 --> <el-date-picker v-model="startDate" type="date" placeholder="选择开始时间" :disabled-date="disabledStartDate" value-format="YYYY-MM-DD" /> <!-- 结束时间 --> <el-date-picker v-model="endDate" type="date" placeholder="选择结束时间" :disabled-date="disabledEndDate" value-format="YYYY-MM-DD" /> </div> </template> <script setup> import { ref } from 'vue' // 时间绑定 const startDate = ref('') const endDate = ref('') // 今天的日期(用于禁用未来日期) const today = new Date() // 【开始时间禁用逻辑】:不能选未来日期(可选,根据需求) const disabledStartDate = (time) => { // return time.getTime() > today.getTime() // 开启则开始时间也不能超过今天 return false // 关闭则开始时间可以选未来日期 } // 【结束时间禁用逻辑】:核心! // 1. 不能早于开始时间 // 2. 不能超过今天 const disabledEndDate = (time) => { const startTime = startDate.value ? new Date(startDate.value) : null // 条件1:小于开始时间 → 禁用 if (startTime && time.getTime() < startTime.getTime()) { return true } // 条件2:大于今天 → 禁用 return time.getTime() > today.getTime() } </script>

如果你用的是范围选择器(daterange)

更简洁,一个控件搞定:

<template> <el-date-picker v-model="dateRange" type="daterange" range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" :disabled-date="disabledDate" value-format="YYYY-MM-DD" /> </template> <script setup> import { ref } from 'vue' const dateRange = ref([]) const today = new Date() // 范围选择器禁用:只能选今天及以前 const disabledDate = (time) => { return time.getTime() > today.getTime() } </script>

核心说明

  1. disabled-date
    Element Plus 提供的禁用日期函数,返回true则该日期不可选。

  2. 结束时间限制

    • time.getTime() > today.getTime()→ 禁止选择今天以后的日期
    • 联动开始时间 → 禁止选择早于开始时间的日期
  3. 格式
    value-format="YYYY-MM-DD"直接输出字符串格式,不用自己处理 Date 对象。


总结

  • 两个独立选择器:结束时间 ≤ 今天,且不早于开始时间
  • 范围选择器:直接限制整个区间不超过今天
  • 代码可直接复制到 Vue3 + Element Plus 项目中使用
http://www.jsqmd.com/news/525053/

相关文章:

  • MacBook用户必看:Cursor免费版无限续杯的3种技术方案
  • 亲测有效!论文AI率直降40%的秘密:4个指令+3个技巧+1个神器
  • 知网/维普/万方三大平台AI检测全攻略:一文搞懂怎么通过 - 我要发一区
  • MiniCPM-V-2_6科研协作:会议白板照片识别+行动项自动提取
  • 高效获取网络小说与个性化阅读的全流程指南
  • 达摩院PALM春联模型应用场景:文旅景区AI楹联互动体验设计
  • 2026四川AI企业培训避坑指南:选对路径,少走弯路
  • 数组中有两个数据,将其变成字符串
  • 毕业论文降AI率:免费额度/效果/售后全维度对比 - 我要发一区
  • 网捷顺科技客服咨询AI流量赋能,重塑智能体验新标杆 - 王老吉弄
  • Clawdbot部署实操:Qwen3-32B与LangChain/LlamaIndex生态无缝集成指南
  • Breaking the Prior Dependency: A Novel Approach to Camouflaged Object Detection with Adaptive Featur
  • 嘎嘎降AI vs 比话降AI vs 率零:2026毕业季工具横评 - 我要发一区
  • 手把手教你为STM32F103C8T6(蓝色小药丸)编译Cleanflight固件,解决Flash溢出问题
  • kubernetes学习
  • OCPI开源充电接口:解决电动汽车充电网络互操作性的技术架构实战
  • 拿云文化客服咨询AI流量赋能,重塑智能体验新标杆 - 王老吉弄
  • 密码安全那些坑:为什么你的正则表达式可能漏掉键盘连续字符?
  • DocMost 容器化部署进阶:从单机到高可用集群
  • 【杠杆】杠杆,保证金,爆仓相关计算--23
  • 苏州同宠信息科技客服咨询AI流量赋能,重塑智能体验新标杆 - 王老吉弄
  • 应届毕业生必看:降AI率工具怎么选?3款不踩坑推荐 - 我要发一区
  • 【DFT实战解析】OCC架构设计:从原理到复杂层级集成的时钟控制策略
  • 正点原子2026开发板教程——从0开始配置Linux内核(4)内核模块详解:从 Hello World 到设备驱动
  • 2026年石油石化电力电缆生产厂家推荐 中低压低压中压变频聚乙烯聚氯乙烯绝缘线缆详解 - 品牌2026
  • 2026半导体键合机温控设备优质推荐榜:恒温温控设备/激光干涉仪温控设备/键合机温控设备/光刻机温控设备/半导体检测设备温控设备/选择指南 - 优质品牌商家
  • 毕业论文降AI率省钱攻略:免费额度+工具组合最优方案 - 我要发一区
  • Orekit实战指南(四)——卫星轨道六根数与地面站经纬度的高效转换
  • Realistic Vision V5.1在量子计算领域的应用:前沿科研人员形象定制
  • 睿知点客服咨询AI流量赋能,重塑智能体验新标杆 - 王老吉弄