Получите метку времени сервера Firestore на стороне клиента - PullRequest
0 голосов
/ 21 сентября 2018

Я создаю приложение, которое отслеживает время.Он рассчитывает время, дифференцируя секунды следующим образом:

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 голосов
/ 21 сентября 2018

Вы также можете записать текущую временную метку с помощью serverTimestamp, а затем прочитать время из того места, в котором оно было только что написано.Затем вы можете внести изменения или расчеты с этим значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...