如何从新的`firebase.firestore.FieldValue.serverTimestamp()获取JavaScript日期对象`
最近Firebase Firestore,我无法从时间戳中检索如何从新的`firebase.firestore.FieldValue.serverTimestamp()获取JavaScript日期对象`,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,最近Firebase Firestore,我无法从时间戳中检索date对象 如何从新的firebase.firestore.FieldValue.serverTimestamp()获取日期对象?您只需执行以下操作: yourFirestoreTimestamp.toDate() 如果查看控制台中的时间戳对象,您将看到.toDate()是默认情况下每个时间戳上可用的函数 -- 但是,请注意,当您尚未与Firestore同步时 FieldValue.serverTimestamp()不提供任何值
date
对象
如何从新的
firebase.firestore.FieldValue.serverTimestamp()获取日期对象?您只需执行以下操作:
yourFirestoreTimestamp.toDate()
如果查看控制台中的时间戳
对象,您将看到.toDate()
是默认情况下每个时间戳
上可用的函数
--
但是,请注意,当您尚未与Firestore同步时
FieldValue.serverTimestamp()
不提供任何值
只有在您与Firestore同步并再次获取数据后,道具才会从serverTimestamp
→ 到时间戳
您还将看到时间戳
对象中保存的更多信息:
只返回一个sentinel对象,在将字段写入文档时使用该对象。它指示服务器应使用实际对象替换它serverTimestamp()
本身不包含任何日期信息,您无法将其转换为日期
当您将sentinel值写入文档并将其读回时,它将成为一个类型对象,您可以使用它的方法将其转换为本机日期对象。最后,我可以得到我需要的
new Date(firebase.firestore.Timestamp.now().seconds*1000).toLocaleDateString()
这不适用于返回值
firebase.firestore.FieldValue.serverTimestamp()
,它不是时间戳类型的对象。返回的sentinel值只有在文档值实际写入文档后才会成为时间戳,正如我在这里的回答中所描述的那样。@DougStevenson感谢您提供的信息。我已经更新了我的答案,将这些信息包含在你的评论中。谢谢。我必须在seconds
键中添加一个下划线(\uuu
),以使其工作:新日期(firebase.firestore.Timestamp.now()。\u seconds*1000)。toLocaleDateString()