ant design 日期選擇 不能大于今天,選擇范圍30天

使用ant design的時間組件 #DatePicker日期選擇框# 需求是要起始時間和結(jié)束時間最多范圍是30天,結(jié)束時間不能超過當(dāng)天日期。

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')); // 開始日期默認是結(jié)束日期往前推30天
    const [endValue,setEndValue] = useState(moment());  // 結(jié)束日期默認是當(dāng)天

    useEffect(()=>{ // 篩選條件改變 觸發(fā)請求
      console.log('getTableData')
     },[endValue,startValue])
    
    // 首先打開時間面板,此方法被調(diào)用
  const disabledStartDate = (startVal) => {
   if (!startVal || !endValue) {
      // 如果沒有選擇結(jié)束日期,則選擇開始日期時,開始日期不能大于今天
      return startVal.valueOf() > new Date().getTime();// 大于今天的日期一律返回true,禁止選擇
    }
    // 如果選擇了結(jié)束日期,則結(jié)束日期和開始日期之差大于30天(24*60*60*1000*30是30天的毫秒數(shù)),還需要開始日期小于結(jié)束日期,返回true,禁止選擇
    const minus = endMonth.clone().subtract(30, "days");
    return  startVal.valueOf() < minus.valueOf() || endValue.valueOf() <= startVal.valueOf();
  }

  // 控制結(jié)束日期
  const disabledEndDate = (endVal) => {
    if (!endVal || !startValue) {
      // 如果沒有選擇開始日期,則結(jié)束日期時大于今天
      return endVal.valueOf() > new Date().getTime();// 大于今天的日期一律返回true,禁止選擇
    }
    //如果選擇了開始日期,則結(jié)束日期和開始日期除了不能超過30個自然日之外,還需要結(jié)束日期不能小于開始日期,還需要不能超過今天,返回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);
  };

  // 下拉列表框選擇回調(diào)
  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="結(jié)束日期"
                    onChange={onEndChange}
                    showTime={true}
                  />
                </div>
)
}

export default DateChoose;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容