Работаем над проектом flutter / dart. Вызов облачной функции со стороны клиента и передача 2 дат, которые преобразуются в ISO8601String.
Печать дат на консоль при выполнении облачной функции для двойной проверки. Они всегда действительны. После создания документа в firestore даты сдвигаются на 1 час.
Я думаю, из-за моего текущего смещения часового пояса, который равен UTC + 1. Летом у меня была такая же проблема, когда firestore сдвигал мои даты на 2 часа из-за летнего времени, что приводило к смещению UTC + 2.
Мои облачные функции развернуты в регионе: europe-west3, который, согласно документации firebase, находится во Франкфурте. Тот же часовой пояс, что и мой (центральноевропейское стандартное время). Но когда я создаю:
const now = new Date();
Результат на час меньше моего местного времени. Почему это происходит, когда мы находимся в одном часовом поясе с одинаковым смещением?
Чтение документов из пожарного хранилища на стороне клиента приводит к неточным датам, что для меня очень плохо, поскольку мне нужно, чтобы они были точными.
Я искал везде, но не нашел ничего, что действительно помогло бы мне. Я пытался построить объект даты разными способами, но результат всегда был одинаковым, может кто-нибудь объяснить мне, почему, и помочь мне? Спасибо.
Отвечает ли это на ваш вопрос? Метка времени Firestore.fromDate, а не UTC — person pasty schedule 05.01.2021
Да спасибо. Также у меня была еще одна проблема в моем коде, но мне уже удалось ее исправить. — person pasty schedule 05.01.2021
Дата объекта Java фактически не содержит информации о часовом поясе, это просто количество миллисекунд с начала эпохи (01.01.1970 00:00:00 UTC) и, следовательно, абсолютный момент времени.
Он преобразуется в действительное время каждый раз, когда выводится пользователю.
Таким образом, похоже, что причина временного сдвига заключается в том, что ваш компьютер или браузер вы просматриваете свои документы из хранилища, установлен неправильный часовой пояс.
Для получения дополнительной информации см. этот вопрос или документация по Java.