从客户端获取Firestore服务器时间戳

时间:2018-09-21 08:57:23

标签: firebase google-cloud-firestore google-cloud-functions angularfire2

我正在构建一个跟踪时间的应用程序。它通过区分秒数来计算时间,如下所示:

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服务器,这可能导致这两个日期之间的不相等。

导致我有两种选择:

1。保存Date而不是serverTimestamp()

这样,这两个日期之间的差将是准确的。虽然,它们不会代表真实日期。另外,如果用户更改自己计算机上的时钟,那么秒数也将更改。

2。创建一个HTTPS函数以检索当前服务器的时间戳。

通过这种方式,这两个日期之间的差异也将是准确的。虽然,感觉好像我走得太远了,只是为了获取服务器的当前时间戳。

我可能会坚持第二种选择。但是我希望有更好的解决方案来实现我的目标。

PS-我正在使用@ angular / fire。因此,将欢迎使用此软件包提供的解决方案。

1 个答案:

答案 0 :(得分:0)

您还可以使用serverTimestamp写入当前时间戳,然后从刚刚写入的位置读取时间。然后,您可以使用该值进行更改或计算。