我有一个 Ngb-Datepicker,可以进行范围选择。我正在使用 moment.js 将 NgbDate 转换为 moment 对象,以便我可以按照我的意愿隐藏和输出格式:例如。 1 月 23 日星期三。
我意识到 NgbDates 给一月一个 1 值,而 moment 给一月一个 0,所以我使用myMoment.subtract(1, 'months')
解决这个问题(在一个月后输出日期之前)。
我现在的问题是,那一刻仍然将原始月份的天数视为相同。因此,当我尝试选择 1 月 1 日至 1 月 31 日之间的日期范围时,它不起作用,因为 28 日之后的任何内容都无效。
仍然可以选择第 29-31 个,但是当我尝试使用formatDate()
函数时,它会被视为无效日期,因为 moment 仍将其视为下个月(二月)——您会看到底部的“to:”标签不会添加日期。
堆栈闪电战:https://stackblitz.com/edit/angular-xtrvjr?file=app%2Fdatepicker-range.ts https://stackblitz.com/edit/angular-xtrvjr?file=app%2Fdatepicker-range.ts
Console output when I log my converted moment:
![Console output](https://i.stack.imgur.com/iu6jg.jpg)
日期转换函数:
// Convert date to "Mon Feb 01" format
formatDate(date: NgbDate) {
const myMoment: moment.Moment = moment(date);
// NgbDates use 1 for Jan, Moement uses 0, must substract 1 month for proper date conversion
var convertedMoment = myMoment.subtract(1, 'months');
if (convertedMoment.isValid()) {
return convertedMoment.format('ddd MMM DD');
} else {
return '';
}
}
使用该函数的模板:
From: {{ formatDate(fromDate) }}
To: {{ formatDate(toDate) }}