ant design 日期选择 不能大于今天,选择范围30天

使用ant design的时间组件 #DatePicker日期选择框# 需求是要起始时间和结束时间最多范围是30天,结束时间不能超过当天日期。

import React , {useEffect, useState } from 'react';
import {DatePicker, Select, Table, Tooltip} from 'antd';
const moment = require('moment');
interface IProps {
  deviceId ?: number
  type ?: number
}
const DateChoose= (props:IProps)=>{
    const dateFormat = 'YYYY-MM-DD HH:mm:ss';
    const [startValue,setStartValue] = useState(moment().subtract(30, 'days')); // 开始日期默认是结束日期往前推30天
    const [endValue,setEndValue] = useState(moment());  // 结束日期默认是当天

    useEffect(()=>{ // 筛选条件改变 触发请求
      console.log('getTableData')
     },[endValue,startValue])
    
    // 首先打开时间面板,此方法被调用
  const disabledStartDate = (startVal) => {
   if (!startVal || !endValue) {
      // 如果没有选择结束日期,则选择开始日期时,开始日期不能大于今天
      return startVal.valueOf() > new Date().getTime();// 大于今天的日期一律返回true,禁止选择
    }
    // 如果选择了结束日期,则结束日期和开始日期之差大于30天(24*60*60*1000*30是30天的毫秒数),还需要开始日期小于结束日期,返回true,禁止选择
    const minus = endMonth.clone().subtract(30, "days");
    return  startVal.valueOf() < minus.valueOf() || endValue.valueOf() <= startVal.valueOf();
  }

  // 控制结束日期
  const disabledEndDate = (endVal) => {
    if (!endVal || !startValue) {
      // 如果没有选择开始日期,则结束日期时大于今天
      return endVal.valueOf() > new Date().getTime();// 大于今天的日期一律返回true,禁止选择
    }
    //如果选择了开始日期,则结束日期和开始日期除了不能超过30个自然日之外,还需要结束日期不能小于开始日期,还需要不能超过今天,返回true为不能选择
    const minus = endMonth.clone().add(30, "days");
    return endVal.valueOf() <= startValue.valueOf() || endVal.valueOf() > moment().endOf('day') || endVal.valueOf() > minus.valueOf();
  }

  // 时间组件fn 选中时间后赋值
  const onStartChange = value => {
    setStartValue(value);
  };

  const onEndChange = value => {
    setEndValue(value);
  };

  // 下拉列表框选择回调
  const changeSelect = val =>{
    console.log('val',val)
    setSelectedVal(val)
  }

return (
     <div>
                  <DatePicker
                    disabledDate={disabledStartDate}
                    format={dateFormat}
                    value={startValue}
                    placeholder="开始日期"
                    onChange={onStartChange}
                    showTime={true}
                  />
                  <span className={styles.lines}>~</span>
                  <DatePicker
                    disabledDate={disabledEndDate}
                    format={dateFormat}
                    value={endValue}
                    placeholder="结束日期"
                    onChange={onEndChange}
                    showTime={true}
                  />
                </div>
)
}

export default DateChoose;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容