Vue elementui 日期范围选择器自定义限制
前端代码:
<el-date-picker
v-model="time"
value-format="yyyy-MM-dd HH:mm:ss"
:default-time="['00:00:00', '23:59:59']"
style="width: 400px"
type="datetimerange"
clearable
:picker-options="expireTimeOPtion"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
重点::picker-options="expireTimeOPtion"
1.只能选今天或者今天之后的时间
data() {
return {
time: [],
expireTimeOPtion: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7; //如果没有后面的-8.64e7就是不可以选择今天的
}
},
}
}
2.今天以及今天之前的日期
data() {
return {
time: [],
expireTimeOPtion: {
disabledDate(time) {
return time.getTime() > Date.now() - 8.64e6; //如果没有后面的-8.64e6就是不可以选择今天的
}
},
}
3.只能选取今天往后三天内
data() {
return {
time: [],
expireTimeOPtime: {
disabledDate(time) {
const times = new Date(new Date().toLocaleDateString()).getTime() + 3 * 8.64e7 - 1
return time.getTime() < Date.now() - 8.64e7 || time.getTime() > times// 如果没有后面的-8.64e7就是不可以选择今天的
}
}
}
}
4.只能选取选中时间的一个月内的时间(eg:如果我初始时间选中是2023.4.14,那么我的终止时间只能在2023.3.14和2023.5.15区间里面选中)
data() {
return {
time: [],
selectDate: '',//判断标记,minDate 起始时间,maxDate终止时间,如果没有选择终止时间,就有一个时间限制,如果选择了,时间限制就解除了。
expireTimeOPtion: {
onPick: ({ minDate, maxDate }) => { //minDate起始时间,maxDate终止时间
this.selectDate = minDate.getTime()
if (maxDate) {
this.selectDate = ''
}
},
disabledDate: (time) => {
if (this.selectDate !== '') {
const one = 30 * 24 * 3600 * 1000
const minTime = this.selectDate - one
const maxTime = this.selectDate + one
return time.getTime() < minTime || time.getTime() > maxTime
}
}
}
}
}
5.只能选择除今天及今天之前的、周六日、美国节假日之外的时间
data() {
return {
time: [],
expireTimeOPtion: {
disabledDate: time => {
// 判断是否为周六或周日
if (time.getDay() === 6 || time.getDay() === 0) {
return true;
}
// 判断是否为当前时间之前
if (time.getTime() < Date.now()) {
return true;
}
// 判断是否为美国节假日
if (this.isUsHoliday(time)) {
return true;
}
return false;
}
}
},
methods:{
isUsHoliday(time) {
// 获取日期
const date = time.getDate();
// 获取月份(注意月份是从0开始的)
const month = time.getMonth();
// 获取年份
const year = time.getFullYear();
// 判断是否为美国节假日
// New Year's Day(元旦)
if (month === 0 && date === 1) {
return true;
}
// Martin Luther King Jr. Day(马丁·路德·金纪念日)- 一月的第三个星期一
if (month === 0 && time.getDay() === 1 && date > 14 && date <= 21) {
return true;
}
// Presidents' Day(总统日)- 二月的第三个星期一
if (month === 1 && time.getDay() === 1 && date > 14 && date <= 21) {
return true;
}
// Memorial Day(阵亡将士纪念日) - 五月的最后一个星期一
if (month === 4 && time.getDay() === 1 && date > 24) {
return true;
}
// Independence Day(独立日) - 7月4日
if (month === 6 && date === 4) {
return true;
}
// Labor Day(劳动节) - 九月的第一个星期一
if (month === 8 && time.getDay() === 1 && date <= 7) {
return true;
}
// Columbus Day(哥伦布日) - 10月的第二个星期一
if (month === 9 && time.getDay() === 1 && date > 7 && date <= 14) {
return true;
}
// Veterans Day(退伍军人日) - 11月11日
if (month === 10 && date === 11) {
return true;
}
// Thanksgiving Day(感恩节) - 11月的第四个星期四
if (month === 10 && time.getDay() === 4 && date > 21 && date <= 28) {
return true;
}
// Christmas Day(圣诞节) - 12月25日
if (month === 11 && date === 25) {
return true;
}
return false;
},
}
重点:expireTimeOPtion代码是写在data里面的,不是methods里的
作者:Carver-大脸猫
出处:https://www.cnblogs.com/carver/articles/18149015
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
转载请注明原处
本文来自博客园,作者:Carver-大脸猫,转载请注明原文链接:https://www.cnblogs.com/carver/articles/18149015
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现