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

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日

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费