我试图从我的firestore数据库中的时间戳数据类型中获取可读的日期。
for (var ticketDoc of ticketsSnapshot.docs) {
var timeStamp = await ticketDoc.data().TimePreferred;
console.log(timeStamp.toDate());
var time = new Date(timeStamp).toDate();
ticketDoc.data().TimePreferred = time;
tickets.push(ticketDoc.data());
}
我在以下网站上读到了一个类似的问题:
如何将Firestore日期/时间戳转换为JS Date()?
所以,我尝试做同样的事情,我希望输出可读的日期,虽然它给了我正确的结果
console.log(timeStamp.toDate());
但它也给了我一个错误。控制台输出如下:-
2019-04-10T06:30:00.000Z
TypeError: (intermediate value).toDate is not a function
不是:我正试图在 Postman 得到可读的日期
8条答案
按热度按时间yqyhoc1h1#
我不知道为什么这个timestamp对象没有.toDate()扩展名,但是如果它有'seconds'和'nanoseconds'属性,你可以用
kjthegm62#
更改以下行:
变成这样:
从docs:
一个字符串,以美式英语的可读形式表示给定Date对象的日期部分。
gmxoilav3#
你可以用下面的方法试试
您可以使用format date函数以所需格式显示。
omtl5h9j4#
由于我不知道的原因,它有时不工作,所以更安全的选择是使用时间戳中的
seconds
和nanoseconds
属性将其转换为日期,如下所示:注:
w1e3prcc5#
你试过把这个改成
i7uaboj46#
如果文档中的
TimePreferred
字段是一个Timestamp
,则只需对它调用toDate()
即可从中获取有效的Date
对象。因此:
这些调用都不是异步的,也没有返回promise,所以不需要
await
。nkcskrwz7#
你必须首先确保timestamp对象是真正的Timestamp类型。要做到这一点,在你从Firebase获得Timestamp之后,创建Timestamp对象:
8ulbf1ek8#
对于Angular