0

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

dateModelFrom: NgbDateStruct;
dateModelTo: NgbDateStruct;  

用户选择日期后,我有 2个带有 ngb日期结构的 jalali 日期:

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);
4

1 回答 1

0

在 ngb-datepicker 的文档中,您将找到范围选择器的示例,并且有一个用于比较两个日期的实现。您也可以检查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;
  }
}
于 2019-04-02T14:17:46.990 回答