Метка времени Firebase возвращается с неправильной датой - Javascript - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь получить значение Timestamp из firestore (используя функции Firebase), и я успешно сделал это локально с помощью метода toDate () Timestamp и библиотеки моментов.

moment(doc.data().EndDate.toDate())

Но когда я развертываю свой код в firebase и тестирую функцию, каким-то образом toDate () возвращает Date с на 1 час меньше, чем сохраненная метка времени в firebase. Я полагаю, он преобразует мою дату в UT C, так как я нахожусь в UTC + 1, а метка времени также сохраняется с UTC + 1 в firestore, но я не знаю, как надежно получить дату метки времени как есть в firestore, независимо от часовых поясов.

Если кто-то знает, почему это происходит, или имеет какие-либо идеи, как решить эту проблему, было бы здорово.

1 Ответ

1 голос
/ 13 июля 2020

Все временные метки в Firestore хранятся в UT C. Если вы видите что-то другое в консоли Firebase, это просто ваш браузер форматирует это для вашего местного часового пояса.

In JavaScript, все объекты Date также представлены в UT C. Если вы отформатируете это как строку, вы снова, возможно, получите другое представление на основе вашего местного часового пояса.

Если вы напишете код, который вычисляет значения с использованием дат или временных меток, вы должны выполнять все свои вычисления, используя UT C. Это практически все вычислительные системы, которые хотят иметь дело с датами. Когда приходит время отформатировать дату для отображения конечному пользователю, только тогда вы должны принять во внимание часовой пояс и представить что-то в соответствии с предпочтениями пользователя.

...