如何不显示Angular Datepipe月份缩写



我在应用程序中的日期字段上使用日期管道。例如,如果日期是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

最新更新