Как рассчитать разницу или сравнить (больше или нет) между данными (календарь Джалали) - PullRequest
0 голосов
/ 01 апреля 2019

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

dateModelFrom: NgbDateStruct;
dateModelTo: NgbDateStruct;  

после даты выбора пользователя, у меня есть 2 jalali date со структурой даты 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 Ответ

0 голосов
/ 02 апреля 2019

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

Пример:

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

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

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