antd datePicker 限制可選時(shí)間

1、需求
時(shí)間需要限制在當(dāng)前時(shí)間分鐘之前,比如:當(dāng)前時(shí)間是2020年3月31日23:25,那么時(shí)間選擇器可選的時(shí)間是:在2020年3月31日23:25 之前的。

2、思路
因?yàn)槭褂玫氖?antd 的datePicker 組件,該組件提供了兩個(gè)方法來做時(shí)間限制這件事,一個(gè)方法是 disabledDate, 用來限制日期,返回值為 boolean, 另一個(gè)方法是 disabledTime 用來限制顯示的時(shí)間,返回是這樣的:

const disabledTime = () => {
  return {
    disabledHours: () => {} // 返回 需要disabled 的hours
    disabledMinutes: () => {} // 返回 需要disabled 的 minutes
  }
}

3、實(shí)踐

import React from 'react';
import { DatePicker } from 'antd';
import moment from 'moment';
import './index.less';

const { RangePicker } = DatePicker;

const DateRangePicker = ({ onChange }) => {
  const disabledHours = () => {
    const hours = [];
    for (let i = 23; i > moment().hour(); i--) {
      hours.push(i);
    }
    return hours;
  };

  const disabledMinutes = currentDate => {
    const currentMinute = moment().minute();
    const currentHour = moment(currentDate).hour();
    const minutes = [];
    if (currentHour === moment().hour()) {
      for (let i = 59; i > currentMinute; i--) {
        minutes.push(i);
      }
    }
    return minutes;
  };

  const disabledTime = (dateTime) => {
    if (moment(dateTime).isBefore(moment(), 'day')) {
      return {
        disabledHours: () => [],
        disabledMinutes: () => [],
      };
    }

    if (moment(dateTime).isSame(moment(), 'day')) {
      return {
        disabledHours: () => disabledHours(dateTime),
        disabledMinutes: () => disabledMinutes(dateTime),
      };
    }
  };

  return (
    <RangePicker
      format="YYYY/MM/DD HH:mm"
      showTime
      onChange={onChange}
      disabledDate={(selectedDate) => moment(selectedDate).isAfter(moment(), 'day')}
      disabledTime={disabledTime}
      placeholder=""
      className="date-picker"
    />
  );
};

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

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

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