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

4 篇文章 0 订阅

在项目开发中遇到这样一个问题,element时间选择器的默认选中范围为往前三个月到今天。如图所示:在这里插入图片描述
实现这个功能要考虑到两点:
第一点:月份要从现在的月份往前减三个月,但是存在三个月份不能直接减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
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值