1、只能选择当天以后的时间(不包含当天)

disabledDate = (current) => {
  return current && current < moment().endOf('day'); //如果需要包含当天就去掉current && 
  //或者
  //return current < moment().subtract(1, "day");
<DatePicker
      format="YYYY-MM-DD"
      disabledDate={this.disabledDate}

2、只能选择今天和之前的日期(包含今天)

disabledDate = (current) => {
    return current && current >= moment().endOf('day');

3、只能选择前10天的数据包括今天就是11天的数据

disabledDate = (current) => {
    return !( current < moment().subtract(-111, "days").endOf("day") && current >= moment().endOf('day') );

4、重新打开弹窗defaultValue不起作用的问题修复

要在modal里面加上destroyOnClose

<Modal
  title="Basic Modal"
  visible={this.state.visible}
  onOk={this.handleOk}
  onCancel={this.handleCancel}
  destroyOnClose
    <DatePicker
      defaultValue={defaultValue}
      format="YYYY-MM-DD"
      disabledDate={this.disabledDate}
</Modal>

5、月份补0

let mouth = String(yueNum).padStart(2,0); 

6、其他获取时间的函数

// 获取某年某月的第一天
  getFirstDate = date => {
    return moment(date)
      .startOf('month')
      .format('YYYY-MM-DD');
// 获取某年某月的最后一天
  getLastDate = date => {
    return moment(date)
      .endOf('month')
      .format('YYYY-MM-DD');
// 不足两位数前面补充0
zeroize = obj => {
    if (obj < 10) {
      return `0${obj}`;
    return obj;
// 获取某年某月的第一天和最后一天日期
  getDay = (year, month) => {
    if (year !== '' && month !== '') {
      const firstDay = new Date(year, month - 1, 1); // 这个月的第一天
      const currentMonth = firstDay.getMonth(); // 取得月份数
      const lastDay = new Date(firstDay.getFullYear(), currentMonth + 1, 0); // 是0而不是-1
      return [firstDay, lastDay];
// 指定日期的前几天,后几天的时间
  getNextDate = (date, day) => {
    const dd = new Date(date);
    dd.setDate(dd.getDate() + day);
    const y = dd.getFullYear();
    const m = dd.getMonth() + 1 < 10 ? `0${dd.getMonth() + 1}` : dd.getMonth() + 1;
    const d = dd.getDate() < 10 ? `0${dd.getDate()}` : dd.getDate();
    return `${y}-${m}-${d}`;
getNextDate('2021-08-30', 6) // 2021-08-30号之后的第6天日期
getNextDate('2021-08-30', -6) // 2021-08-30号之前的第6天日期
复制代码
分类:
前端
标签: