【element ui --- DateTimePicker,有效时间不能晚于当前时间】

在这里插入图片描述
如上图所示:

下面展示一些 内联代码片

//  DateTimePicker 日期时间组件
 <el-form-item label="有效时间"  prop="expireDate">
        <el-date-picker
          v-model="formUserAccount.expireDate"
          type="datetime"
          value-format="yyyy-MM-dd HH:mm:ss"
          placeholder="选择有效时间"
          style="width:200px"
          :picker-options="pickerOptions"
        >
 </el-date-picker>
// 在vue2的data中
 pickerOptions: { 
 //限制时间
  selectableRange: `${this.$moment().format('HH:mm:SS')} - 23:59:59`,
  //限制日期
      disabledDate(date) {
      return date.getTime() < Date.now() - 3600 * 1000 * 24;
      }
 }, 
          

对expireDate 做了约定 rules中

// An highlighted block
expireDate: [
   { required: true, message: "请输入有效时间", trigger: "blur" },
   { validator: this.checkReleaseTime, trigger: "blur" },
            ],
// An highlighted block
checkReleaseTime(rule, value, callback){
        if(new Date(value) < new Date()){
          return callback(new Error('有效时间必须大于当前时间'))
        }else {
          callback()       }

    }, 

到这发现在选择当前的时间,只能选择晚于当天的时间,但是在选择第二天或者更早时,也只能选择晚于当天的时间。于是就要对时间做修改

 //使用watch时间监听时间控件的值
 watch: {
  'formUserAccount.expireDate':{
     handler(newValue, oldValue) {
       if (newValue) {
         let date = new Date();
         let min = date.getMinutes();
         date.setMinutes(min);
         let nowDate = this.$moment(date).format("HH:mm:ss");
         if (this.$moment(date).format("yyyy-MM-DD") === this.$moment(newValue).format("yyyy-MM-DD")) {
           let hh1 = this.$moment(newValue).format("HH:mm:ss");
           if(hh1 > nowDate) {
             this.formUserAccount.expireDate = new Date();
           }
           this.pickerOptions.selectableRange = nowDate+'-' + "23:59:59";
         } else {
           this.pickerOptions.selectableRange = "00:00:00 - 23:59:59";
         }
         this.pickerOptions = this.pickerOptions;
       }
     },
     deep: true,
     immediate: true,
   }
 },

在这个我参考了这位博主的文档:链接: https://blog.csdn.net/xiaohuli_hyr/article/details/113614593

 date.setMinutes(min);

这里,博主是min+1,但是我实际用的时候,发现分钟会加一,导致不能取到精确的时间。

这是我在项目中遇到的需求就记录下来。学习学习

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值