今日在开发中,碰到了这样的需求,开始时间框只能选择此刻此刻之后的时间,翻阅了许多博客没有找到很简便的方法实习,官方文档解释的也不是很清楚,结合了一下案例实现了这个需求

首先我们需要定义一个DatePicker组件

<a-range-picker v-model:value="time"
                          :placeholder="['开始时间','结束时间']"
                          class="w-full"
                          :disabled-date="disabledDate"
                          :disabled-time="disabledRangeTime"
                          :show-time="{
                            hideDisabledOptions: true,
                            defaultValue: [dayjs('00:00:00', 'HH:mm:ss'), dayjs('11:59:59', 'HH:mm:ss')]
                          }"
                          format="YYYY-MM-DD HH:mm"
          />

根据官方文档disabled-date控制不可选择的天,disabled-time控制不可选择的时分秒。

我们setup定义两个方法:

disabledData返回一个布尔值,确定不可以选择区间

const disabledDate = (current: Dayjs) => {
      return current &amp;&amp; current < dayjs().subtract(1, "days") 
    }

disabledRangeTime可拆分

”_“此时选择时间可以用来判断,“type”即双选框时判断是开始时间还是结束时间

 const disabledRangeTime = (_: Dayjs, type: 'start' | 'end') =&gt; {
      const date = new Date()
      const day = date.getDate()
      const hour = date.getHours()
      const min = date.getMinutes()
      if (type === 'start') {
        return {
          disabledHours: () => {
            if(_ !== null) {
              if(_.date() > day) {
                return []
              } else {
                return range(0, hour)
              }
            }
            return range(0, hour)
          },
          disabledMinutes: () =>{
            
            if(_ !== null) {
              if(_.hour() > hour) {
                return []
              } else {
                return range(0, min)
              }
            }
            return range(0, min)
          } 
        }
      }
    }

原文地址:https://blog.csdn.net/qq_52237525/article/details/126872868

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_15533.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注