我有一个从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 8
和Firestore
答案 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());
我认为可能有效