javascript - 如何在 react 日期选择器中禁用日期和时间?

标签 javascript reactjs momentjs react-datepicker

例如:今天是 8 月 23 日下午 4 点。 我将禁用日期设为 22(我使用了 minDate = {moment ().toDate ()})。在这种情况下如何使禁用时间达到 16(包括)?您不能选择比现在更早的日期和时间。 我使用 react-datepickermoment 库。

代码在这里:https://stackblitz.com/edit/react-msygf9

class App extends Component {
  constructor() {
    super();
    this.state = {
      selected: new Date()
    };
  }

  handle = (date) => {
    this.setState({
      selectedDate: date
    })
  }

  render() {
    return (
      <div>
         <DatePicker
            selected={this.state.selected}
            onChange={this.handle}
            showTimeSelect
            timeFormat="HH:mm"
            timeIntervals={15}
            dateFormat="MMMM d, yyyy h:mm aa"
            timeCaption="time"
            minDate={moment().toDate()}
          />
      </div>
    );
  }
}

最佳答案

https://stackblitz.com/edit/react-hogvhv?file=index.js

我已经对此进行了测试,它可以按照您的要求工作。

import React, { Component } from 'react';
import { render } from 'react-dom';
import './style.css';
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import moment from 'moment';


class App extends Component {
  constructor() {
    super();
    this.state = {
      selected: new Date(),
      minTime: this.calculateMinTime(new Date())
    };
  }
  calculateMinTime = date => {
    let isToday = moment(date).isSame(moment(), 'day');
    if (isToday) {
        let nowAddOneHour = moment(new Date()).add({hours: 1}).toDate();
        return nowAddOneHour;
    }
    return moment().startOf('day').toDate(); 
}

  handle = (date) => {
    this.setState({
      selectedDate: date,
      minTime: this.calculateMinTime(date)
    })
  }

  render() {
    return (
      <div>
         <DatePicker
            selected={this.state.selected}
            onChange={this.handle}
            excludeOut
            showTimeSelect
            timeFormat="HH:mm"
            timeIntervals={15}
            dateFormat="MMMM d, yyyy h:mm aa"
            timeCaption="time"
            minDate={new Date()}
            minTime={this.state.minTime}
            maxTime={moment().endOf('day').toDate()}
          />
      </div>
    );
  }
}

render(<App />, document.getElementById('root'));

关于javascript - 如何在 react 日期选择器中禁用日期和时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57618675/

相关文章:

javascript - AngularJS - 绑定(bind)计时

javascript - 找不到模块 : Can't resolve './components' while import multiples function components

javascript - 请解释一下在这种情况下扩展运算符的使用

javascript - 为什么 moment-timezone 在 webpack 4 和/或 create react app 4 中使用的空间要少得多?

javascript - TypeScript 扩展第三方库 moment.js

javascript - 查找由 rgba 颜色创建的十六进制颜色

javascript - 相邻依赖 AJAX(改进)

javascript - jQuery id 不产生文本表示

javascript - 在 React Hook 中,如何更改 useState 数组的特定值?

vuejs2 - 我的 laravel./vuejs 应用程序中未使用 momentjs 时出现弃用警告