将Firestore时间戳转换为日期格式

时间:2019-10-28 12:06:42

标签: typescript date google-cloud-firestore momentjs

我有一个从BehaviorSubject获取某些数据的服务。

this.myData.album$.value.album_date;

控制台使用以下命令记录从Firestore返回的日期时:

console.log(this.myData.album$.value.album_date);

控制台显示:

Timestamp {seconds: 1572263054, nanoseconds: 63000000}

我需要做的是在我的一个函数中转换此值并将其操纵为任何格式,例如“ 2019年10月28日,星期一”。

不幸的是,鉴于我的要求,我无法在HTML内使用toDate() |,这需要在我的函数中实现。

在这里的任何帮助将不胜感激。

注意:我有moment可在我的Typescript文件中使用。 我正在使用Angular 8Firestore

2 个答案:

答案 0 :(得分:1)

聚会晚了一点,但我遇到了同样的问题。

这是我的解决方案,尽管由于使用any而不太美观,但对我有用:

(myAlbumDate as any).toDate()

现在TypeScript不再抱怨了,生产大楼顺利通过了。

更新

今天,我发现自己处在相同的场景中,因为any类型伤了我的脑筋,所以我试图找到一种更优雅的解决方案,并在ERROR:gpu_process_transport_factory.cc(1007)-Lost UI shared context : while initializing Chrome browser through ChromeDriver in Headless mode上找到了它,并将其应用于我的用例。

解决方案是像这样扩展Date接口:

declare global {
  interface Date {
    toDate: () => Date;
  }
}

现在,我有了IntelliSense,并且在Angular模板中没有any或错误了。

答案 1 :(得分:0)

https://firebase.google.com/docs/reference/js/firebase.firestore.Timestamp#to-date

您需要使用Firebase在函数中获取日期,然后将日期传递给html:

console.log(this.myData.album$.value.album_date.toDate());

我认为可能有效