欢喜375 2023-10-27 16:48 采纳率: 50%
浏览 37
已结题

nz-date-picker 时间段限制

从可恢复时间区间内选择时间段,然后确定要恢复的时间点的date-picker内日期可选范围

img


img


```html
<nz-select  formControlName={{item.formControlName}}
                    [(ngModel)]="restoreTimeInterval"
                    nzPlaceHolder="请选择可恢复时间区间"
                    *ngIf="item.formControlName === 'restoreTimeInterval'"
                    (ngModelChange)="restoreTime = null"
                    >
          <nz-option  *ngFor="let item of restoreTimeIntervalSelectOptions" 
                      nzLabel={{item.label}} nzValue={{item.value}}
                      nzCustomContent
                    >
            <div (click)="restoreTimeIntervalClick(item)">{{item.label}}</div>
          </nz-option>
</nz-select>

<nz-date-picker formControlName={{item.formControlName}}
                        [nzShowTime]="{ nzDefaultOpenValue: defaultTime}"
                        [(ngModel)]="restoreTime" 
                        nzFormat="yyyy-MM-dd HH:mm:ss" [nzShowToday]="false"
                        *ngIf="item.formControlName === 'restoreTime'"
                        [nzDisabled]="!restoreTimeInterval"
                        [nzDisabledDate]="restoreTimeDisabledDate"
                        [nzDisabledTime]="restoreTimeDisabledTime"
                        >
        </nz-date-picker>


现在日期限制是可以的,但是时分秒限制,琢磨不透。
希望有大佬指点一二
  • 写回答

16条回答 默认 最新

  • 社区专家-Monster-XH 2023-10-27 16:49
    关注
    • 你可以通过 nzDisabledDatenzDisabledTime 来自定义禁用的日期和时间。

    先在你的组件中定义两个方法 restoreTimeDisabledDaterestoreTimeDisabledTime

    1. 对于 nzDisabledDate,简单地确保选中的日期是在你的可恢复时间区间内。

    2. 对于 nzDisabledTime,要确保在特定日期下,用户只能选择特定的时间范围。

    以下是一个示例实现,考虑到你给的可恢复时间区间:

    restoreTimeInterval = null; // 你的可恢复时间区间
    restoreTime: Date | null = null; // 用户选择的要恢复的时间点
    
    // 禁用不在范围内的日期
    restoreTimeDisabledDate = (current: Date): boolean => {
      // 将可恢复时间区间字符串转换为Date对象
      let startTime = new Date("2023-10-27 01:00:07");
      let endTime = new Date("2023-10-27 01:00:14");
    
      // 如果当前日期不在开始和结束日期之间,则禁用
      return current < startTime || current > endTime;
    };
    
    // 禁用不在范围内的时间
    restoreTimeDisabledTime = (current: Date): { nzDisabledHours, nzDisabledMinutes, nzDisabledSeconds } => {
      let startTime = new Date("2023-10-27 01:00:07");
      let endTime = new Date("2023-10-27 01:00:14");
    
      let result = {
        nzDisabledHours: () => this.getDisabledHours(current, startTime, endTime),
        nzDisabledMinutes: (hour: number) => this.getDisabledMinutes(current, hour, startTime, endTime),
        nzDisabledSeconds: (hour: number, minute: number) => this.getDisabledSeconds(current, hour, minute, startTime, endTime),
      };
    
      return result;
    };
    
    getDisabledHours(date, startTime, endTime) {
      // 根据需要调整此方法,来禁用不在你的可恢复时间范围内的小时。
    }
    
    getDisabledMinutes(date, hour, startTime, endTime) {
      // 根据需要调整此方法,来禁用不在你的可恢复时间范围内的分钟。
    }
    
    getDisabledSeconds(date, hour, minute, startTime, endTime) {
      // 根据需要调整此方法,来禁用不在你的可恢复时间范围内的秒。
    }
    

    getDisabledHours, getDisabledMinutesgetDisabledSeconds 方法都需要你根据你的具体需求进行适当的调整。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(15条)

报告相同问题?

问题事件

  • 系统已结题 11月7日
  • 已采纳回答 10月30日
  • 赞助了问题酬金50元 10月27日
  • 创建了问题 10月27日