как вычислить разницу или сравнить (больше или нет) между данными (календарь Джалали)

#ng-bootstrap #ngb-datepicker

#ng-bootstrap #ngb-datepicker

Вопрос:

Я использую два ngb-datepicker на странице, конечно, календарь джалали, и привязываюсь к этим двум моделям:

 dateModelFrom: NgbDateStruct;
dateModelTo: NgbDateStruct;  
  

после выбора пользователем дат у меня есть 2 даты джалали со структурой даты ngb:

 dateModelFrom = {day: 1, month: 1, year: 1398}
dateModelTo = {day: 3, month: 1, year: 1398}  
  

теперь мне нужно вычислить разницу между двумя датами и проверить, меньше ли FromDate, чем ToDate или нет.

я могу использовать (https://github.com/alihoseiny/ngx-persian ) или (https://momentjs.com / ) и преобразовать эти две даты, а затем вычислить, но это не может быть хорошим, я думаю, должно быть более короткое решение.

также я знаю, что есть служба NgbDateNativeAdapter (https://ng-bootstrap.github.io/#/components/datepicker/api#NgbDateNativeAdapter ), я пытаюсь преобразовать дату в javascript, а затем вычислить, но вывод такой же, как и ввод:

 let toDay:NgbDateStruct = this._persianNgbCalendar.getToday();;
let _toDay:Date = this._ngbDateNativeAdapter.toModel(toDay);
  

Ответ №1:

В документации от ngb-datepicker вы найдете пример для средства выбора диапазона, и есть реализация для сравнения двух дат. Также вы можете проверить stackblitz для лучшего понимания.

Пример:

 <ngb-datepicker #dp (select)="onDateSelection($event)" [displayMonths]="2" [dayTemplate]="t" outsideDays="hidden"></ngb-datepicker>
  

В вашей функции выбора даты вы можете сравнить две даты:

 onDateSelection(date: NgbDate) {
  if (!this.fromDate amp;amp; !this.toDate) {
    this.fromDate = date;
  } else if (this.fromDate amp;amp; !this.toDate amp;amp; date.after(this.fromDate)) {
    this.toDate = date;
  } else {
    this.toDate = null;
    this.fromDate = date;
  }
}