需求: 时分秒
的选择,限制选择:自当前时间6个月的内的时间
<el-date-picker
v-model="duration"
type="datetimerange"
range-separator="~"
:start-placeholder="this.$t('templateManager.startDate')"
:end-placeholder="this.$t('templateManager.endDate')"
value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd HH:mm:ss"
size="mini"
style="width:90%"
:clearable="false"
:picker-options="pickerOptions"
/>
pickerOptions: {
disabledDate(time) {
let currentDate = new Date();
let year = currentDate.getFullYear();
let month = currentDate.getMonth();
let date = currentDate.getDate();
// 强制将当前时间的:时、分、秒设置时间为 23:59:59。 不然选择 时分秒的时候,如果超过当前的时分秒,确认按钮会禁用,无法选择
let newDate = new Date(year, month, date, 23, 59, 59);
let currentTimeStr = newDate.getTime();
const sixMonthsAgo = new Date();
//设置6个月的时间范围
sixMonthsAgo.setMonth(sixMonthsAgo.getMonth() - 6);
//time>currentTimeStr:把当前之后的全部禁用
//time<sixMonthsAgo.getTime()禁用6个月前的
return time.getTime() > currentTimeStr || time < sixMonthsAgo.getTime();
},
},
/**
* @method 计算两个日期时间范围是否在N个月以内 eg:['2024-04-01 00:00:00', '2024-05-31 00:00:00']是否在6个月内
* @param {String} startDate 开始时间
* @param {String} endDate 结束时间
* @param {Number} value 指定的相差月份
* @return {Boolean} true 是, false 否
*/
export function isWithinSpecifiedMonths(startDate, endDate, value) {
let start = new Date(startDate);
let end = new Date(endDate);
// 确认开始时间早于结束时间
if (start > end) {
[start, end] = [end, start];
}
// 计算月份差异
const monthsDiff = (end.getFullYear() - start.getFullYear()) * 12 + (end.getMonth() - start.getMonth());
// 检查月份差异是否小于或等于 差异月份
return monthsDiff <= value
}
/**
* @method 计算两个日期时间范围是否在N小时内以内
* @param {String} startTimeStr 开始时间
* @param {String} endTimeStr 结束时间
* @param {Number} value 指定的相差月份
* @return {Boolean} true 是, false 否
*/
export function isWithinSpecifiedHours(startTimeStr, endTimeStr,value) {
const startTime = new Date(startTimeStr);
const endTime = new Date(endTimeStr);
const timeDiff = endTime - startTime;
const timeDiffHours = timeDiff / (1000 * 60 * 60);
return timeDiffHours <= value
}
标签:00,const,param,element,let,new,Date,ui,选择器
From: https://www.cnblogs.com/0520euv/p/18143985