Я создаю приложение, которое отслеживает время.Он рассчитывает время, дифференцируя секунды следующим образом:
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.Таким образом, решения из этого пакета будут приветствоваться.