elementui时间/日期选择器选择禁用当前之前(之后)时间

01. 日期选择

<template>
  <div>
    <el-date-picker
      format="yyyy-MM-dd"
      value-format="yyyy-MM-dd"
      type="date"
      placeholder="请选择日期"
      v-model="dayDate"
      :picker-options="setDisabled"
    ></el-date-picker>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dayDate: "",
      setDisabled: {
        // 返回禁用时间
        disabledDate(time) {
          return time.getTime() > Date.now();  // 可选历史天、可选当前天、不可选未来天
          // return time.getTime() > Date.now() - 8.64e7;  // 可选历史天、不可选当前天、不可选未来天
          // return time.getTime() < Date.now() - 8.64e7;  // 不可选历史天、可选当前天、可选未来天
          // return time.getTime() < Date.now(); // 不可选历史天、不可选当前天、可选未来天
        },
      },
    };
  },
  /*
    8.64e7 是科学计数法 8.64乘以10的7次方,即为86400000也就是 1000*60*60*24 也就是一天的毫秒数。因为Date.now()
    方法能够返回得到自1970年1月1日00:00:00(UTC)到当前时间的毫秒数。咱们是北京时间的时区,也就是为东8区,
    起点时间对应就是:"1970/01/01 08:00:00"

    picker-options需要一个最终的布尔值,所以是否减去8.64e7也就是是否往前推移一天,也就是是否包含当前的天数
  */
};
</script>

02. 月份选择(示例)

<template>
    <div>
        <el-date-picker
          v-model="value"
          type="monthrange"
          value-format="yyyy-MM"
          format="yyyy-MM"
          :picker-options="setMonthDisabled"
          range-separator="至"
          start-placeholder="开始时间"
          end-placeholder="结束时间">
        </el-date-picker>
    </div>
</template>

<script>
export default {
    data() {
        return {
            value: "",
            setMonthDisabled: {
              // 返回禁用时间
              disabledDate(time) {
                // 获取当前的月份信息
                const date = new Date(); // 获取当前的时间基本信息,值是这样的: Tue Jul 20 2021 14:59:43 GMT+0800 (中国标准时间)
                const year = date.getFullYear(); // 获取当前年份,值是这样的: 2021
                let month = date.getMonth() + 1; // 获取当前月份,值是这样的: 6   getMonth()方法返回值是0-11,也就是1月份到12月份,所以要加上1,才是当前月份
                if (month >= 1 && month <= 9) {
                  // 如果是1月到9月就要在前面补上一个0   比如:02、07    月份这样表示
                  month = "0" + month;
                }
                const nowDate = year.toString() + month.toString(); // 转换成字符串拼接,最终得到年和月,比如此时的时间是2021年7月20号,所以nowDate的值是:202107
      
                // 获取时间选择器的月份信息
                const timeyear = time.getFullYear(); // 获取时间选择器的年份(有很多)
                let timemonth = time.getMonth() + 1; // 与上面同理
                if (timemonth >= 1 && timemonth <= 9) {
                  timemonth = "0" + timemonth;
                }
                const elTimeData = timeyear.toString() + timemonth.toString();
      
                // 返回,时间选择器的日期月份大于当前日期的月份,又因为disabledDate函数是控制月份禁用不可选
                // 所以,最终就是:时间选择器的月份大于当前的月份,就都禁用掉,所以就实现了最终效果:
                // 小于等于当前月份都不可选 
                return elTimeData <= nowDate; // 这里虽然是字符串,但是弱类型语言js会做一个转换,是可以比较大小的如: '202107' > '202008'
              },
            },    
        }
    }
}
</script>
  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
您好!对于element-ui的el-time-picker组件,可以通过自定义样式来实现页面上的时间随着鼠标滚动而发生变化的效果。 首先,您可以使用鼠标滚动事件来监听鼠标滚动的操作,然后根据滚动的方向来更新时间的值。 以下是一个简单的示例代码: ```html <template> <div> <el-time-picker v-model="time" :picker-options="pickerOptions" @mousewheel.native="handleMousewheel" ></el-time-picker> </div> </template> <script> export default { data() { return { time: '12:00', // 初始化时间值 }; }, methods: { handleMousewheel(event) { // 根据滚动方向更新时间值 if (event.deltaY > 0) { this.time = this.getNextTime(this.time); } else { this.time = this.getPrevTime(this.time); } }, getNextTime(time) { // 获取下一个时间值 // 这里可以根据需要自定义逻辑,比如增加一分钟 // 以下示例每次增加一分钟 const [hour, minute] = time.split(':'); let nextMinute = parseInt(minute) + 1; let nextHour = parseInt(hour); if (nextMinute >= 60) { nextMinute = 0; nextHour++; if (nextHour >= 24) { nextHour = 0; } } return `${this.formatNumber(nextHour)}:${this.formatNumber(nextMinute)}`; }, getPrevTime(time) { // 获取上一个时间值 // 这里可以根据需要自定义逻辑,比如减少一分钟 // 以下示例每次减少一分钟 const [hour, minute] = time.split(':'); let prevMinute = parseInt(minute) - 1; let prevHour = parseInt(hour); if (prevMinute < 0) { prevMinute = 59; prevHour--; if (prevHour < 0) { prevHour = 23; } } return `${this.formatNumber(prevHour)}:${this.formatNumber(prevMinute)}`; }, formatNumber(num) { // 格式化数字,补零 return num.toString().padStart(2, '0'); }, }, }; </script> ``` 在上述示例代码中,我们使用了el-time-picker组件,并监听了鼠标滚动事件`@mousewheel.native`。根据滚动方向,调用`getNextTime`或`getPrevTime`方法来更新时间的值。您可以根据实际需求自定义这两个方法的逻辑。 希望能对您有所帮助!如有更多问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值