react限制日期范围为选中时间前后3个月

基于react的日期控制插件

头部引用

使用react的useState,通过记录state状态的变量来判定日期当前值。

  import React,{ useState }  from 'react';
  const { RangePicker } = DatePicker;
  const [selectDate, setSelectDate] = useState(null);

功能函数

  //日期限制
  const disabledDate = (current) =>{
    if (!current || !selectDate){
      return false
    }
    let selectV = moment(selectDate.valueOf()).format('YYYY-MM-DD HH:mm:ss');
    return current < moment(selectV).subtract(3, 'months') || current > moment(selectV).add(3,'month') || current > moment().endOf('day')
  };
  const onCalendarChange = (dates) =>{
    if (!dates || !dates.length)  {
      return
    }
    setSelectDate(dates[0])
  };
  const onDateOpenChange = ()=>{
    setSelectDate(null);
  }

插件使用

  <RangePicker
    showTime
    ranges={{1: [
        moment(
          moment()
            .subtract(1, 'days')
            .format('YYYY-MM-DD 18:00:00'),
        ),
        moment(moment().format('YYYY-MM-DD 18:00:00')),
      ],3: [moment().subtract(3, 'days'), moment()],6: [moment().subtract(6, 'days'), moment()],
      // 20190701: [moment('2019-07-01 00:00:00'), moment('2019-07-01 23:59:59')]
    }}

    disabledDate={disabledDate}
    onCalendarChange={onCalendarChange}
    onOpenChange={onDateOpenChange}
    style={{ width: 430 }}
    className={style.rangePicker}
    format="YYYY-MM-DD HH:mm:ss"
    placeholder={['开始时间', '结束时间']}
    defaultValue={[
      moment(
        moment()
          .subtract(1, 'days')
          .format('YYYY-MM-DD 18:00:00'),
      ),
      moment(moment().format('YYYY-MM-DD 18:00:00')),
    ]}
    onChange={changeTime.bind(this, 'days')}
  />

最终结果

限制日期为选中的前后三个月,且小于当前日期

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值