我在应用程序中的日期字段上使用日期管道。例如,如果日期是2019年1月2日,我希望它显示" 2019年1月"。目前,它显示了" 2019年1月"它增加了三个字母缩写后的一段时间。
我当前的角卷括号中的表达是:
{{ currentReportDate | date: 'MMM yyyy' }}
根据日期管文档,应在没有缩写期的情况下显示它。
app.module文件中的我的提供商看起来像这样:
providers: [
ConfigService,
AuthGuard,
{ provide: APP_BASE_HREF, useValue: "" },
{ provide: LOCALE_ID, useValue: "en-AU" },
{ provide: "BASE_URL", useFactory: getBaseUrl },
{ provide: MAT_DATE_LOCALE, useValue: "en-AU" },
{ provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
{ provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS },
{ provide: HAMMER_GESTURE_CONFIG, useClass: GestureConfig },
UserService
],
有什么想法我如何摆脱这段时期?
它似乎正在根据en-AU
源代码链接链接
export default [
'en-AU',
...
['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']***,
...
]
看来en-AU
的Locale Shart Mather格式有点不同(没有时期(:
export default moment.defineLocale('en-au', {
...
monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
...
});
所以也许您可以利用时刻为您格式化日期;可能会效法这一刻。
除了您的日期格式外,我当前的代码示例没有任何真正的问题是错误的,应该是:
{{ currentReportDate | date: 'd MMM yyyy' }}
输出:2 Jan 2019
这是一个有效的示例:https://stackblitz.com/edit/angular-grgual
看到您的评论后,您总是可以做:{{(currentReportDate | date: 'd MMM yyyy').replace(".", "???")}}
,但这绝对是肮脏的工作。
另外,我建议您使用formatDate
而不是DatePipe
,以防止提供商之间的冲突。我认为您不想干扰您的提供商,因为在组件的其他部分可能需要它们。
在您的组件上,您首先需要导入formatDate
。
import { formatDate } from '@angular/common';
然后,您可以通过这样做来使用formatDate
:
newDate: Date;
dateString: string;
ngOnInit() {
this.newDate = new Date('Mon Apr 01 2019 00:00:00 GMT+1100 (Australian Eastern Daylight Time)');
// this.dateString = formatDate(this.newDate, 'dd-MM-yyyy hh:mm:ss a', 'en-AU', '+1100');
this.dateString = formatDate(this.newDate, 'MMM yyyy', 'en-AU', '+1100');
}
这也应该给您相同的预期结果。
格式化文档
demo