前端Ant Design DatePicker限定日期选择范围

Ant版本为1.X,API中有的笔者就不介绍了,下面介绍一些遇到过的问题和解决方案:

自定义日期选择范围

API中有介绍如何用开始时间去限定结束时间的选择范围,或者用结束时间去限定开始时间选择范围。我们一般会用自己的时间限定选择范围,而自己的时间一般是字符串格式,如“2020-11-11”,或者用new Date()声明的日期,这时候就要做一些处理,废话不多说上代码:

template:
<a-date-picker
	 placeholder="选择日期"
	 dateFormat="YYYY-MM-DD"
	 style="width:200px"
	 :disabledDate="disabledDate"
></a-date-picker>
import moment from 'moment'

选择范围小于等于今天

methods:
moment,
//endOf()是将其设置为时间单位的末尾,可以参考moment的API
disabledDate(current) {
	return current > moment().endOf('day')
},

在这里插入图片描述

选择范围小于今天

methods:
moment,
//subtract(1, 'days')是增加一日,还有参数'years'、'months'和'weeks',也可以用负数去减相应的单位
disabledDate(current) {
	return current > moment().subtract(1, 'days').endOf('day')
},

在这里插入图片描述

选择范围大于等于今天

moment,
//注意:这里如果不加上subtract(),在选择一次日期之后今天就不能选了
disabledDate(current) {
	return current && current <= moment().subtract(1, 'days').endOf('day')
},

在这里插入图片描述

选择范围只能是昨天、今天和后天

moment,
//注意:这里如果不加上subtract(),在选择一次日期之后今天就不能选了
disabledDate(current) {
	return !(current > moment().subtract(2, 'days').endOf('day') && current < moment().subtract(-1, 'days').endOf('day'))
},

在这里插入图片描述

日期格式和字符串格式限定选择范围

字符串格式日期选择范围小于今天

methods:
moment,
disabledDate(current) {
	return current.valueOf() >= moment('2020-11-03')
},

date格式日期选择范围小于今天

date转成字符串之后再限定日期

methods:
moment,
disabledDate(current) {
	return current.valueOf() >= moment(dateFormat())
},
//格式化时间
dateFormat() {
	let date = new Date()
	let Y = date.getFullYear() + '-'
	let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
	let D = date.getDate()
	return Y + M + D
},
### Ant Design 日期时间择器使用指南 #### 一、组件简介 Ant Design 的 `DatePicker` 组件提供了多种模式用于处理不同场景下的日期和时间取需求。这不仅限于简单的日历择,还包括特定的时间范围等功能[^1]。 #### 二、基本用法 对于想要实现基础功能的应用程序来说,可以通过如下方式引入并配置最简易版的日期选择框: ```javascript import { DatePicker } from 'ant-design-vue'; // 或者按需加载单项组件 import DatePicker from 'ant-design-vue/lib/date-picker'; Vue.use(DatePicker); ``` 接着,在模板部分可以这样定义一个输入控件: ```html <a-date-picker @change="onChange" /> ``` 这里通过监听 change 事件获取用户定的具体时刻,并将其传递给父级作用域内的处理器函数 onChange() 进行后续逻辑操作[^2]。 #### 三、高级特性支持 除了上述的基础形式外,该组件还允许开发者自定义显示格式、设置默认中的初始值以及限定范围等参数。例如下面这段代码展示了如何指定不同的展示样式及时区信息: ```html <template> <a-space direction="vertical"> <!-- 带有快捷面板 --> <a-date-picker show-time placeholder="Select Time" @ok="onOk"/> <!-- 设置最小最大年份限制 --> <a-month-picker v-model:value="valueMonth" :disabledDate="disabledDate"/> <!-- 自定义分隔符 --> <a-range-picker valueFormat="YYYY-MM-DD HH:mm:ss" separator="-" format="YYYY/MM/DD HH:mm:ss"/> </a-space> </template> <script lang="ts"> export default { setup(){ const onOk=(time:string)=>{ console.log(time); } function disabledDate(current:any){ // Can not select days before today and today return current && current.valueOf() < Date.now(); } return{ onOk, disabledDate }; }, }; </script> ``` 以上实例分别实现了带有时钟界面的择窗口、仅能浏览月份视图的日历插件还有两个相连的起始结束区间型部件[^3]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值