React中使用antd DatePicker限制日期选择

本文介绍了在React项目中使用antd DatePicker组件时如何通过disabledDate属性限制用户选择特定日期的方法。具体包括禁止选择今天之前或之后的日期,以及限定日期选择范围不超过7天等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景

React中使用antd DatePicker限制日期选择,有下面一些场景:

1、今天之前的日期不可选择(不包括今天)

disabledDate = (_current) => {
    let current = _current.format('YYYY-MM-DD')
    return current && current < moment().endOf('day').format('YYYY-MM-DD')
}

2、今天之前的日期不可选择(包括今天)

disabledDate = (_current) => {
    let current = _current.format('YYYY-MM-DD')
    return current && current <= moment().endOf('day').format('YYYY-MM-DD')
}

3、今天之后的日期不可选择(不包括今天)

disabledDate = (_current) => {
    let current = _current.format('YYYY-MM-DD')
    return current && current > moment().endOf('day').format('YYYY-MM-DD')
}

4、今天之后的日期不可选择(包括今天)

disabledDate = (_current) => {
    let current = _current.format('YYYY-MM-DD')
    return current && current >= moment().endOf('day').format('YYYY-MM-DD')
}

5、选择不超过7天的范围

startDisabledDate = (_current) => {
    let endDate = moment(this.state.end_date).format('YYYY-MM-DD')
    let endDate2 = moment(endDate).subtract(6, 'days').format('YYYY-MM-DD')
    let current = _current.format('YYYY-MM-DD')
    return current &&
        (
            current > endDate
            ||
            current < endDate2
        )
}
endDisabledDate = (_current) => {
    let startDate = moment(this.state.start_date).format('YYYY-MM-DD')
    let startDate2 = moment(startDate).add(6, 'days').format('YYYY-MM-DD')
    let current = _current.format('YYYY-MM-DD')
    return current &&
        (
            current < startDate
            ||
            current > startDate2
        )
}

6、选择不超过7天的范围以及今天之后的日期不可选择(包括今天)

startDisabledDate = (_current) => {
    let endDate = moment(this.state.end_date).format('YYYY-MM-DD')
    let endDate2 = moment(endDate).subtract(6, 'days').format('YYYY-MM-DD')
    let current = _current.format('YYYY-MM-DD')
    return current &&
        (
            current > endDate
            ||
            current < endDate2
        )
}
endDisabledDate = (_current) => {
    let startDate = moment(this.state.start_date).format('YYYY-MM-DD')
    let startDate2 = moment(startDate).add(6, 'days').format('YYYY-MM-DD')
    let dayDate = moment().endOf('day').format('YYYY-MM-DD')
    let current = _current.format('YYYY-MM-DD')
    if (startDate2 > dayDate) {
        return current &&
            (
                current < startDate
                ||
                current >= dayDate
            )
    } else {
        return current &&
            (
                current < startDate
                ||
                current > startDate2
            )
    }
}

应用

<>
    <p></p>
    <RLDatePicker
        allowClear={false}
        onChange={this.startDateChange}
        disabledDate={this.startDisabledDate}
        locale={locale}
        inputReadOnly
        format="YYYY-MM-DD"
        placeholder="请选择日期"
        value={this.state.start_date}
    />
    <p></p>
    <RLDatePicker
        allowClear={false}
        onChange={this.endDateChange}
        disabledDate={this.endDisabledDate}
        locale={locale}
        inputReadOnly
        format="YYYY-MM-DD"
        placeholder="请选择日期"
        value={this.state.end_date}
    />
</>

在这里插入图片描述
选择范围为7天且不能选择今天及之后的日期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值