我正在构建一个跟踪时间的应用程序。它通过区分秒数来计算时间,如下所示:
serverTimestamp: FieldValue // {seconds: number, milliseconds: number}.
getSeconds() {
const createdTime = new Date(this.serverTimestamp * 1000).getTime()
const currentTime = new Date().getTime();
return Math.abs((currentTime - createdTime) / 1000);
}
问题在于Date
的值等于当前客户端的设备时钟,而Firestore的时间戳等于Firestore服务器,这可能导致这两个日期之间的不相等。
导致我有两种选择:
Date
而不是serverTimestamp()
。这样,这两个日期之间的差将是准确的。虽然,它们不会代表真实日期。另外,如果用户更改自己计算机上的时钟,那么秒数也将更改。
通过这种方式,这两个日期之间的差异也将是准确的。虽然,感觉好像我走得太远了,只是为了获取服务器的当前时间戳。
我可能会坚持第二种选择。但是我希望有更好的解决方案来实现我的目标。
PS-我正在使用@ angular / fire。因此,将欢迎使用此软件包提供的解决方案。
答案 0 :(得分:0)
您还可以使用serverTimestamp写入当前时间戳,然后从刚刚写入的位置读取时间。然后,您可以使用该值进行更改或计算。