在 antd 日期选择器中禁用当前日期之前和当前日期 1 个月之后的日期

Posted

技术标签:

【中文标题】在 antd 日期选择器中禁用当前日期之前和当前日期 1 个月之后的日期【英文标题】:disable dates before current date and after 1 month of current date in antd date picker 【发布时间】:2019-05-14 19:24:34 【问题描述】:

我正在为我的 react 应用程序使用 ant UI,我有一个日期选择器。我想禁用当前日期之前和当前日期 1 个月之后的日期。 我的日期选择器

<DatePicker
     defaultValue=moment()
     format=dateFormat
     className="datePicker"
     onChange=dateHandler
     ref=(dateSelect) =>  this.dateSelect = dateSelect 
     disabledDate=(current) => 
         return moment().add(-1, 'days')  >= current && 
              moment().add(1, 'month')  <= current;
         
     onFocus=this.rideDateGA
/>

如果我在这里return moment().add(-1, 'days') &gt;= current,那么它会从今天开始禁用之前的日期,但不会禁用日期之后的月份。 就像我 return moment().add(1, 'month') &lt;= current 一样,那么我可以禁用下个月的日期。我的问题是我无法返回这两个值。 如何禁用以前的日期和下个月的日期

【问题讨论】:

我已经用这个解决方案解决了:***.com/a/68923354/14249303 我已经用这个解决方案解决了:***.com/a/68923354/14249303 【参考方案1】:

对于要禁用的日期,您需要它同时满足这两个条件。

当条件为:

moment().add(-1, 'days')  >= current && moment().add(1, 'month')  <= current;

当第一个 moment().add(-1, 'days') &gt;= currentfalse 时,条件返回 false,这就是您看到当前日期之前的几天被正确禁用的原因。

要使条件正确,您需要:

<DatePicker
  defaultValue=moment()
  format=dateFormat
  className="datePicker"
  onChange=dateHandler
  ref=(dateSelect) =>  this.dateSelect = dateSelect 
  disabledDate=(current) => 
     return moment().add(-1, 'days')  >= current ||
          moment().add(1, 'month')  <= current;
     
  onFocus=this.rideDateGA
/>

【讨论】:

【参考方案2】:

要在当前日期之前和当前日期的 1 个月之后禁用,以下是代码。

disabledSubmissionDate = (submissionValue) => 
    if (!submissionValue) 
        return false;
    
    return (submissionValue.valueOf() < Date.now()) || (submissionValue.valueOf() >= moment().add(1, 'month'));



<DatePicker disabledDate=this.disabledSubmissionDate onChange=this.SubmissionDateOnChange />

【讨论】:

非常感谢您的帮助。它对我有用。

以上是关于在 antd 日期选择器中禁用当前日期之前和当前日期 1 个月之后的日期的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用当前日期之后的日期?

element禁用当前系统日期之前,为什么不生效

react+antd,DatePicker组件只选择年月日,得到的时间戳不是当前日期0点

如何使用以下代码在输入表单中自动选择当前日期

如何在日期选择器中设置日期限制

如何在 Twitter 引导日期选择器中禁用结束日期范围?