iView中的DatePicker日期选择控件(开始时间和结束时间约束,结束时间加一天)

前言:最近做项目需要用到日期选择控件,来做个总结,其中包括开始时间和结束时间的约束,直接上代码(Vue项目)

实现效果图:
在这里插入图片描述

template:

<span class="item">
          检测时间:
          <DatePicker type="date" :options="startTimeOptions" @on-change="startTimeChange" placeholder="开始日期" v-model="startDate" style="width: 130px"></DatePicker><DatePicker type="date" :options="endTimeOptions" @on-change="endTimeChange" placeholder="结束日期" v-model="endDate" style="width: 130px"></DatePicker>
 </span>

data:

startDate: "",
endDate: "",
startTimeOptions: {}, //开始日期约束
endTimeOptions: {}, //结束日期约束

methods:

// 设置开始时间
startTimeChange: function(e) { 
      this.startDate = e
      this.query.timeFrom.value = this.startDate
      let startTime = e ? new Date(e).valueOf() - 1 * 24 * 60 * 60 * 1000 : ''
      this.endTimeOptions = {
        disabledDate(date) {
          return date && (date.valueOf() < startTime)
        }
      }
  },
 
  // 设置结束时间
endTimeChange: function(e) { 
     this.endDate = e
     // 发现筛选时不包括结束时间,为了符合需求,对结束时间进行了‘加一天’操作
     this.query.timeTo.value = this.getNewDay(e, 1)
     let endTime = e ? new Date(e).valueOf() : ''
     // 点击控件自带清除按钮后,endTime='', 无法先选择开始日期,所以将endTime暂时赋值为当前时间
     if (endTime === '') {
       endTime = Date.now()
     }
     this.startTimeOptions = {
       disabledDate(date) {
         return date && (date.valueOf() > endTime)
       }
     }
 },
 
 // js 实现YYYY-MM-DD日期加上天数得到新的日期
    getNewDay(dateTemp, days) {
        var dateTemp = dateTemp.split("-");
        var nDate = new Date(dateTemp[1] + '-' + dateTemp[2] + '-' + dateTemp[0]); //转换为MM-DD-YYYY格式
        var millSeconds = Math.abs(nDate) + (days * 24 * 60 * 60 * 1000);
        var rDate = new Date(millSeconds);
        var year = rDate.getFullYear();
        var month = rDate.getMonth() + 1;
        if (month < 10) month = "0" + month;
        var date = rDate.getDate();
        if (date < 10) date = "0" + date;
        return (year + "-" + month + "-" + date);
  },
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值