首页 > 解决方案 > 如何在 Angular 中正确使用 datePipe

问题描述

我试图弄清楚这一点已经有几个小时了。我试图简单地将时间戳Timestamp(seconds=1555755972, nanoseconds=393000000)转换为正常日期 dd/mm/yyyy。

我从 firestore 获取文档列表,然后通过我的组件传递它们:

export class MissionComponent implements OnInit {

  missions: Mission[];
  mission: any = {};

  constructor(
      private missionService: MissionService,
      private datePipe: DatePipe)
 {}

  ngOnInit() {
    this.missionService.getMissions().subscribe(data => {
      this.missions = data.map(e => {
        return{
          id: e.payload.doc.id,
          ...e.payload.doc.data()
        } as Mission;
      });
    });
}

然后我在 html 中通过 for 循环显示了几个文件:

<tr *ngFor="let mission of missions">
                                            ..
                                            <td>{{mission.dataRitiro.toDate() }}</td>
                                            <td>{{mission.dataConsegna.toDate() }}</td>
...

mission.dataRitiro给我Timestamp(seconds=1555755972, nanoseconds=393000000)

如果我正在转换我mission.dataRitiro得到.toDate()Wed Apr 03 2019 00:00:00 GMT+0200 (Ora legale dell’Europa centrale)

直到这里一切正常,但我想得到03/04/2019,所以,在互联网上搜索我找到了方法datePipe,我只需要写mission.dataRitiro.toDate() | date: 'dd/mm/yyyy',但如果我在 html 中写它,我只会得到一个空白字段,在控制台中我得到这个错误

Error: InvalidPipeArgument: 'Missing locale data for the locale "it-IT".' for pipe 'DatePipe'
    at...

但在我的 app.module 中,我已导入 import { NgModule, LOCALE_ID } from '@angular/core'; 并插入到提供程序中 { provide: LOCALE_ID, useValue: "it-IT" }

所以在这一点上,我真的不知道该怎么办。感谢你们。

标签: angulardatepipe

解决方案


推荐阅读