解决Element DateTimePicker开始时间和结束时间大小关系

方法:利用picker-options属性

效果:

①开始时间和结束时间不能小于当前时间;

②结束时间大于开始时间,开始时间小于结束时间;


HTML


          <el-form-item label="开始时间:">
            <el-date-picker
              v-model="ruleForm.startTime"
              type="datetime"
              placeholder="选择开始时间"
              default-time="12:00:00"
              value-format="yyyy-MM-dd HH:mm:ss"
              :picker-options="startTime"
              @change="estimateTime"
              style="width:100%"
            ></el-date-picker>
          </el-form-item>
          <el-form-item label="结束时间:">
            <el-date-picker
              v-model="ruleForm.endTime"
              type="datetime"
              placeholder="选择结束时间"
              default-time="12:00:00"
              value-format="yyyy-MM-dd HH:mm:ss"
              :picker-options="endTime"
              @change="estimateTime"
              style="width:100%"
            ></el-date-picker>
          </el-form-item>

Data

 ruleForm:{
  startTime: "",
  endTime: "",
}
// 日期限制
      startTime: {
        disabledDate: time => {
          if (this.ruleForm.endTime) {
            // 设置开始时间大于结束时间
            return (
              time.getTime() > new Date(this.ruleForm.endTime).getTime() ||
              time.getTime() < Date.now() - 86400000
            );
          } else {
            // 设置开始时间小于当前时间
            return (
              time.getTime() <
              new Date(new Date().toLocaleDateString()).getTime()
            );
          }
        }
      },
      // 结束时间大于开始时间
      endTime: {
        disabledDate: time => {
          if (this.ruleForm.startTime) {
            return (
              time.getTime() <
              new Date(this.ruleForm.startTime).getTime() - 86400000
            );
          } else {
            // 设置开始时间小于当前时间
            return (
              time.getTime() <
              new Date(new Date().toLocaleDateString()).getTime()
            );
          }
        }
      },

JS

这里在Date.now() - 60000,让比较的时间延期一分钟,让我们可以使用日期里面的“此刻”功能

    // 判断结束时间是否大于开始时间,选择的时间是否大于当前时间
    estimateTime() {
      if (this.ruleForm.startTime && this.ruleForm.endTime) {
        console.log(this.ruleForm.startTime, this.ruleForm.endTime);
        let res =
          new Date(this.ruleForm.startTime).getTime() <
            new Date(this.ruleForm.endTime).getTime() &&
          new Date(this.ruleForm.startTime).getTime() > Date.now() - 60000 &&
          new Date(this.ruleForm.endTime).getTime() > Date.now() - 60000;
        if (!res) {
          this.$message({
            message: "课程起止时间错误",
            type: "warning"
          });
          this.ruleForm.endTime = this.ruleForm.startTime = "";
        }
      }
    }

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue ElementDateTimePicker组件,要禁止某天的某个时间段,你可以使用其`disabledDate`和`disabledTime`属性来实现。 首先,你可以通过设置`disabledDate`属性来禁止选择某天。该属性接受一个函数,函数的参数是当前日期,你可以根据需要返回一个布尔值来判断是否禁用该日期。例如,如果要禁用2022年1月1日,可以这样设置: ```vue <template> <el-date-picker v-model="date" :picker-options="pickerOptions" ></el-date-picker> </template> <script> export default { data() { return { date: null, pickerOptions: { disabledDate(time) { // 禁用2022年1月1日 return time.getFullYear() === 2022 && time.getMonth() === 0 && time.getDate() === 1; } } }; } }; </script> ``` 接下来,你可以通过设置`disabledTime`属性来禁止选择某个时间段。该属性也接受一个函数,函数的参数是当前时间和日期,你可以根据需要返回一个对象来指定禁用的时间段。例如,如果要禁用上午9点到下午2点之间的时间,可以这样设置: ```vue <template> <el-time-picker v-model="time" :picker-options="pickerOptions" ></el-time-picker> </template> <script> export default { data() { return { time: null, pickerOptions: { disabledTime(time) { // 禁用上午9点到下午2点之间的时间 return { disabledHours: () => { return [9, 10, 11, 12, 13]; }, disabledMinutes: () => { return [0]; }, disabledSeconds: () => { return [0]; } }; } } }; } }; </script> ``` 通过设置这两个属性,你可以禁止某天的某个时间段在Vue ElementDateTimePicker中选择。希望对你有帮助!如果有任何疑问,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值