基于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')}
  />

最终结果

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐