首页 > 解决方案 > PrimeNg p-calendar date.month 结果错误月份

问题描述

我已经从 primeNg 实现了 p-calendar,当我尝试比较/检查日期时,它将返回错误的月份。

<p-calendar
    [locale]="nl"
    [inline]="true"
    [showOtherMonths]="false"
    [showWeek]="true"
    [styleClass]="'ic-calendar'">
    <ng-template pTemplate="date" let-date>
      <span [class.maintenance]="checkDate(date)">{{date.day}}</span>
    </ng-template>
  </p-calendar>

如果我将 {{date.day}} 更改为 {{date.month}} (或将其添加以仅显示月份),它将导致 5 而不是 6 月份的 6 月份(当时是当前月份)。

在我的打字稿中,我配置了 p 日历:

this.nl = {
      firstDayOfWeek: 1,
      dayNames: ['Zondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag'],
      dayNamesShort: ['Zon', 'Maa', 'Din', 'Woe', 'Don', 'Vrij', 'Zat'],
      dayNamesMin: ['Zo', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za'],
      // tslint:disable-next-line: max-line-length
      monthNames: [ 'Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December' ],
      monthNamesShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec' ],
      dateFormat: 'dd/mm/yyyy',
      weekHeader: 'Wk'
    };

标签: angularprimeng

解决方案


在 javascript 中,月份是唯一使用从零开始的索引的月份。

p-calendar 组件中使用的日期对象是自定义对象,而不是日期对象。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

您需要从此对象创建一个新的日期。

例如:

checkDate(date: any) {
    const d = new Date(date.year, date.month, date.day);

    // do something with the date
  }
}

推荐阅读