element-ui 时间选择器

需求: 时分秒的选择,限制选择:自当前时间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
}

posted @ 2024-04-18 17:16  云霄紫潭  阅读(74)  评论(0编辑  收藏  举报