el-date-picker日期选择器,日期范围设置三个月

在项目开发中遇到这样一个问题,element时间选择器的默认选中范围为往前三个月到今天。如图所示:el-date-picker日期选择器,日期范围设置三个月_第1张图片
实现这个功能要考虑到两点:
第一点:月份要从现在的月份往前减三个月,但是存在三个月份不能直接减3个月,分别是1,2,3月,因为分别往前推为10,11,12。所以当前处于这三个月份需要做判断。
第二点:每个月的月份之间可能存在着不同。比如5月有31天,2月有28天。假设当前是5月31号,那么推到2月应该取到28号,而不是直接取2月31号。
接下来看代码:(建议该方法封装为公用方法,用时直接调用)

// 三个月前的时间
export function threeDate() {
  let date = new Date()
  let currentY = date.getFullYear();
  // 三个月前的时间减2
  let currentM = date.getMonth() - 2;
  let lastM = new Date(currentY,currentM,0);
  // 日期小于10,前面加10
  let lastDay = lastM.getDate() < 10 ? '0' + lastM.getDate() : lastM.getDate()
  // 对特殊月份1,2,3,进行特殊判断
  let d = new Date()
  let realYear = null
  // 年份应该减1
  if (d.getMonth() == 0 || d.getMonth() == 1 || d.getMonth() == 2) {
    realYear = d.getFullYear() - 1
  } else {
    realYear = d.getFullYear()
  }
  let realMonth = null
  // 3月对应12月,2月对应11月,1月对应10月
  if (d.getMonth()-2 == 0) {
    realMonth = 12
  } else if (d.getMonth()-2 == -1) {
    realMonth = 11
  } else if (d.getMonth()-2 == -2) {
    realMonth = 10
  } else {
    realMonth = d.getMonth() - 2
  }
  // a是当前日期,lastDay是三个月前日期
  let a = d.getDate() < 10 ? '0' + d.getDate() : d.getDate()
  realMonth = realMonth < 10 ? '0' + realMonth : realMonth
  // 当前时间大于三个月前,时间取三个月前的时间,小于或者等于,取当前时间
  let realDay = a > lastDay ? lastDay : a
  // 返回三个月前日期
  return realYear + '-' + realMonth + '-' + realDay
}

你可能感兴趣的:(element,Vue,vue.js,javascript,前端)