#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;
}
}