1. 前言
- 时间相关的转换
- 时间相关的验证
- 适用el-date-picker 的 options,当然其他逻辑也都是相通的
2. moment
- 主要借助 moment
3. 日期选择今日之前
DISABLE_DATE: { disabledDate: (time) => { return time.getTime() > Date.now(); }, },
4. 禁用开始日期
- 这个主要是那种有开始日期 和结束日期的条件
DISABLE_DATE_START(eTime) { return { disabledDate(time) { if (eTime) { //如果结束时间不为空,则小于结束时间 return new Date(eTime).getTime() < time.getTime(); } else { // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天 } }, }; },
5. 禁用结束日期
- 这个主要是那种有开始日期 和结束日期的条件
DISABLE_DATE_END(sTime) { return { disabledDate(time) { if (sTime) { //如果开始时间不为空,则结束时间大于开始时间 return new Date(sTime).getTime() > time.getTime(); } else { // return time.getTime() > Date.now()//开始时间不选时,结束时间最大值小于等于当天 } }, }; },
6.开始日期不能大于结束日期 并且 不能大于今日之后的日期
beforeOptions(obj) { return { disabledDate: time => { if (obj.eTime) { return ( time.getTime() > new Date(obj.eTime) ); } else { return time.getTime() > Date.now(); } } }; },
7. 结束日期不能小于开始日期 并且 不能大于今日之后的日期
afterOptions(obj) { return { disabledDate: time => { let startTime = time.getTime() > Date.now(); if (obj.sTime) { startTime = time.getTime() < new Date(obj.sTime) - (1 * 24 * 60 * 60 - 1) * 1000; } const endTime = time.getTime() > Date.now(); return startTime || endTime; } }; },
8.当前月(包含当前月不可选)
disableMonth() { return { disabledDate(time) { const date = new Date() const year = date.getFullYear() let month = date.getMonth() + 1 month = month.toString().padStart(2, '0') const currentDate = year.toString() + month const timeYear = time.getFullYear() let timeMonth = time.getMonth() + 1 timeMonth = timeMonth.toString().padStart(2, '0') const timedate = timeYear.toString() + timeMonth return currentDate >= timedate }, }; },