typescipt
public Patients: Observable<any>;
constructor(private db: AngularFirestore) {
this.Patients = this.db.collection('Patients').valueChanges();
//从firebase获取数据:
ngOnInit(): void {
this.Patients.subscribe((response) => {
this.prepareData(response);
this.console.log(response);
});
}
//在本节中,用于将数据添加到apexcharts
prepareData(patients) {
patients.forEach((patient) => {
});
}
我猜firebase Timestamp在ISO8601中,JavaScriptDate方法并不完全支持它。
要将其转换为进一步使用,您可以尝试以下操作:
const firebaseDate = "20190412T131518.000Z";
const convertedDate = new Date(firebaseDate.replace(/(....)(..)(.....)(..)(.*)/, '$1-$2-$3:$4:$5'));
console.log(convertedDate);
EDIT刚刚看到您的评论回复,您只需将秒数传递给日期方法
const firebaseObj = { seconds: 1612890000, nanoseconds: 0 }
const convertedDate = new Date(firebaseObj.seconds)
console.log(convertedDate)
firebase时间戳提供了一个toDate
方法,该方法基本上返回一个Date对象。
您可以创建一些实用程序类型和保护,这些类型和保护在处理Firestore记录时可能会派上用场。
export interface FireTimeStamp extends Date {
toDate: () => Date;
}
export type TimeStamp = Date | FireTimeStamp;
export const isFireStamp = (value: FireTimeStamp | Date | unknown): value is FireTimeStamp =>
(value as FireTimeStamp)?.toDate && (value as FireTimeStamp)?.toDate() !== undefined;
export const isTimeStamp = (value: TimeStamp | unknown): value is TimeStamp =>
isFireStamp(value) || value instanceof Date;
这里有一个实用函数,当你不确定它是date对象还是firebase时间戳对象时,可以获取日期。
export const toDate = (date: TimeStamp): Date => isFireStamp(date) ? date.toDate() : date;
如果你需要显示日期,你也可以有一个自定义管道来转换日期。
@Pipe({
name: 'toDate'
})
export class ToDatePipe implements PipeTransform {
transform(date: TimeStamp): Date {
return toDate(date);
}
}