如何计算数据(Jalali 日历)之间的差异或比较(是否更大)

how calculate difference or compare(is bigger or not) between to data(Jalali calendar)

我在一个页面中使用了两个ngb-datepicker,当然是jalali calendar,并绑定到这两个模型:

dateModelFrom: NgbDateStruct;
dateModelTo: NgbDateStruct;  

在用户 select 日期之后,我有 2 个 jalali 日期 具有 ngb 日期结构:

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

现在,我需要计算两个日期之间的差异,并检查 fromDate 是否小于 toDate。

我可以使用 (https://github.com/alihoseiny/ngx-persian) or (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);

在 ngb-datepicker 的文档中,您会找到一个 range picker and there is a implementation for comparing two dates. Also you can check the 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;
  }
}