日期选择器开始结束时间设置阈值

有个需求, 开始时间和结束时间的阈值为两天

想到了一个巧妙的思路, 可以同时满足这个条件

  • 结束时间不能小于开始时间

  • 开始时间不能大于结束时间

 <nz-date-picker  [nzAllowClear]="false"
                  nz-tooltip nzTooltipTitle="开始时间和结束时间的阈值为两天" nzTooltipPlacement="top"
                  nzFormat="yyyy-MM-dd HH:mm:ss" nzPlaceHolder="开始时间" formControlName="startTime"
                  style="height: 32px" [nzShowToday]="false" [nzShowNow]="false"
                  nzShowTime [nzDisabledDate]="disabledRangeStart(item.get('endTime').value)"
                  (ngModelChange)="clickStartChange($event,item,1)"></nz-date-picker>
                <span class="yl-span">-</span>
<nz-date-picker [nzAllowClear]="false"
                  (ngModelChange)="clickStartChange($event,item,2)"
                  nz-tooltip nzTooltipTitle="开始时间和结束时间的阈值为两天" nzTooltipPlacement="top"
                  nzFormat="yyyy-MM-dd HH:mm:ss" nzPlaceHolder="结束时间" formControlName="endTime"
                  style="height: 32px" [nzShowToday]="false" [nzShowNow]="false" nzShowTime
                  [nzDisabledDate]="disabledRangeTime(item.get('startTime').value)"></nz-date-picker>

 // 设置禁用的结束时间
  disabledRangeTime(current) {
    return (obj) => {
      return obj.getTime() < current.getTime();
    };
  }

  // 设置禁用的开始时间
  disabledRangeStart(current) {
    return (obj) => {
      return obj.getTime() > current.getTime();
    };
  }

// num 1开始 2结束
  clickStartChange($event: any, item, num: number) {
    const startTime = item.get('startTime').value;
    const endTime = item.get('endTime').value;
    if (
      num == 1 &&
      startTime.getTime() < subDays(endTime, 2).getTime() - 1000
    ) {
      item.get('endTime').setValue(addDays(startTime, 2));
    }
    if (
      num == 2 &&
      endTime.getTime() > addDays(startTime, 2).getTime() + 1000
    ) {
      item.get('startTime').setValue(subDays(endTime, 2));
    }
  }
上一篇:react中 文章标题 随页面滚动显示隐藏


下一篇:用户输入和while循环