记录饿了吗组件el-date-picker 的时间范围问题

有一个需求,要求目前只能选择到当前时间的2小时以内

选择当前时间2小时内
在这里插入图片描述
在这里插入图片描述

做气象开发发布预警有一个需求就是发布时间只能选择当前时间的2小时以内的,那么就有一个跨天的问题需要思考

那么得知道什么时候可以跨天,由于我这里默认只能选择到分钟

先控制当前天的选择问题 利用 el-date-picker 的picker-options

页面部分
<template>
	<el-form>
        <div class="el-form--time">
          <el-form-item label="发布时间:" class="date" required>
            <el-date-picker
              type="datetime"
              v-model="begin_time"
              :picker-options="pickerOptions"
              prefix-icon="custom-date-icon"
              format="yyyy-MM-dd HH:mm"
              value-format="yyyy-MM-dd-HH-mm"
            ></el-date-picker>
          </el-form-item>
        </div>
      </el-form>
</template>

script部分
export default {
	data(){
		return{
			begin_time: new Date(), // 当前时间
		    selectTimeRange: "", // 后面选择时间范围用
		    pickerOptions: {
		    	// 这里是控制天的选择
		        disabledDate(date) {
		          const now = new Date();
		          const now2 = new Date();
		          now2.setHours(0);
		          now2.setMinutes(0);
		          now2.setSeconds(0);
		          if (now.setHours(now.getHours() + 2) < now.getHours()) {
		            const startDateTime = now.setDate(now.getDate());
		            const endDateTime = now.setDate(now.getDate() + 1);
		            return (
		              date.getTime() <= new Date(startDateTime).getTime() ||
		              date.getTime() >= new Date(endDateTime).getTime()
		            );
		          } else {
		            return (
		              date.getTime() <= now2.getTime() - 8.64e7 ||
		              date.getTime() >= now.getTime()
		            );
		          }
		        },
		      },
		}
	},
	watch:{
		begin_time: {
	      handler(val) {
	        if (val) {
	        	// 这里是控制只能选择两小时 给selectTimeRange 赋值好 再传给pickerOptions
	          const nowDays = val.split("-")[2];
	          if (Number(nowDays) === Number(new Date().getDate())) {
	            console.log("我选择了当天的时候", new Date().getHours());
	            if (new Date().getHours() >= 22) {
	              this.selectTimeRange = `${new Date().getHours()}:${new Date().getMinutes()}:00 - 23:59:00`;
	            } else {
	              this.selectTimeRange = `${new Date().getHours()}:${new Date().getMinutes()}:00 - ${new Date(
	                new Date().setHours(new Date().getHours() + 2)
	              ).getHours()}:${new Date().getMinutes()}:00`;
	            }
	          } else if (Number(nowDays) === Number(new Date().getDate()) + 1) {
	            console.log("我选择了第二天的时候");
	            if (new Date().getHours() + 2 === 24) {
	              this.selectTimeRange = `00:00:00 - 00:${new Date().getMinutes()}:00`;
	            } else if (new Date().getHours() + 2 === 25) {
	              this.selectTimeRange = `00:00:00 - 01:${new Date().getMinutes()}:00`;
	            }
	          }
	          this.$set(
	            this.pickerOptions,
	            "selectableRange",
	            this.selectTimeRange
	          );
	        }
	      },
	    },
	} 
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值