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

elementplus 使用日期时间选择器,设置可选范围为前后大于2年且只能选择历史时间不能大于当前时间点

  • 需求:时间选择器可选的时间范围进行限制,-2年<a<2年且a<new Date().getTime()
  • 核心:这里需要注意plus版没有picker-options换成disabled-date属性了,使用了visible-change和calendar-change属性
  • 逻辑:另设一个参数记录第一个点击的时间点,根据这个时间点设置时间范围,使用visible-change和calendar-change属性来进行第一个时间点的记录和清空
  • 代码环境:vue3 elementplus ts
  • 效果
    在这里插入图片描述
  • 当前时间为25-2-10,且没有进行第一位的时间选择所以仅大于该日期的不能选择
    在这里插入图片描述
  • 选择了第一位时间24-2-6,所以可选时间范围为 小于该值2年内或者大于该值2年内且小于当前时间25-2-10的值,如下方几张图所示
    在这里插入图片描述
    • 小于22年2月6号的不能选
      在这里插入图片描述
    • 大于26-2-6的且大于25-2-10的不能选(我这个24年选的不太好,应该选22年就能展示了但是不想截图了哈哈,应该能理解我的意思吧)
      在这里插入图片描述
  • 代码
// h5
<el-date-picker
						v-model="rightTime"
						type="datetimerange"
						range-separator="-"
						start-placeholder="开始时间"
						end-placeholder="结束时间"
						:disabled-date="disabledDate"
						format="YYYY-MM-DD HH:mm:ss"
						value-format="YYYY-MM-DD HH:mm:ss"
						@visible-change="onvisibleChange"
						@calendar-change="oncalendarChange"
					/>

// js 
const rightTime = ref([])
const chooseDay= ref(null) // 记录第一个点击的时间点

const onvisibleChange = (val)=>{
	if(val){
		chooseDay.value = null
	}
}
const oncalendarChange = (val)=>{
	const [chooseFirstDate] = val
  	chooseDay.value = new Date(chooseFirstDate)

}


const disabledDate = (time: Date) => { // 返回true就禁用
	const now = new Date(); // 当前时间
	if (!chooseDay.value) { // 选择的第一个日期不存在时的情况
		// return false  // 选择的第一个日期不存在时可任意选择开始日期
		return time.getTime() > now.getTime()  // 不能选择比当前时间点打的时间(只能选择历史时间)
	}else{ // 当点击第一个时间点后,可选时间范围为,大于a时间点2年内的或者小于a时间点2年内的
		const twoYearsAgoMin = new Date(chooseDay.value.getFullYear() - 2, chooseDay.value.getMonth(), chooseDay.value.getDate());
		const twoYearsAgoMax = new Date(chooseDay.value.getFullYear() + 2, chooseDay.value.getMonth(), chooseDay.value.getDate());
		return time.getTime() > now.getTime() || time.getTime() < twoYearsAgoMin || time.getTime() > twoYearsAgoMax 
	}
	
	
	
}



http://www.kler.cn/a/541037.html

相关文章:

  • 前端权限控制和管理
  • 常用的python库-安装与使用
  • Jenkins数据备份到windows FTP服务器
  • [RabbitMQ] RabbitMQ常见面试题
  • Docker从入门到精通- 容器化技术全解析
  • docker学习笔记
  • DeepSeek大模型的发展的十问十答
  • 蓄电池放电技术革新:引领能源存储新时代
  • Day60_补20250208_图论part5_并查集理论基础|寻找存在的路径
  • C++ 中的 cJSON 解析库:用法、实现及递归解析算法与内存高效管理
  • 基于fpga的数字频率计(论文+源码)
  • 鱼塘钓鱼(多路归并,贪心)
  • PDF密码忘了?三步找回超简单
  • 详解享元模式
  • 数据结构 顺序表及其实现
  • Oracle(OCP和OCM)
  • 微信小程序文件流转base64文件,wx.arrayBufferToBase64()方法已弃用
  • Linux网卡为什么没有对应的设备文件
  • 二叉树的遍历方式和子问题思路
  • MyBatis常见知识点
  • 一、通义灵码插件保姆级教学-IDEA(安装篇)
  • A Normalized Gaussian Wasserstein Distance for Tiny Object Detection(纯翻译)
  • 常见数据结构的C语言定义---《数据结构C语言版》
  • Pdf手册阅读(1)--数字签名篇
  • 爬虫工程师分享:获取京东商品详情SKU数据的技术难点与攻破方法
  • AWS成本优化实战:查询未关联弹性IP地址的完整指南