Firestore Timestamp.toDate () возвращает дату в UTC - PullRequest
0 голосов
/ 03 марта 2020

Я загружаю метки времени в документы Firestore из моего приложения флаттера как DateTime(2020, 02, 29, 9)

Метка времени сохраняется в Firestore как February 29, 2020 at 9:00:00 AM UTC-6

Получение меток времени из приложения флаттера с помощью document['timestamp'].toDate().hour возвращает «9», как и ожидалось.

Проблема возникает при получении этих данных в облачной функции. snap.timestamp.toDate() возвращает объект даты как Sat Feb 29 2020 03:00:00 GMT+0000 (UTC) без учета смещения часового пояса.

Как я могу получить то же время, которое хранится в firestore, вместо получения его в UT C.

1 Ответ

3 голосов
/ 03 марта 2020

Метки времени в Firestore представлены как смещения от времени эпохи в UT C. Нет часового пояса, закодированного в метку времени. Когда вы просматриваете поле метки времени в консоли Firestore, оно форматирует дату, используя настроенный часовой пояс локального компьютера.

JavaScript Дата объекты похожи - они также не сохраняют часовые пояса. При печати строкового представления даты будет добавлен часовой пояс, но это только часть форматирования строки. Не используйте этот формат строки, если вы хотите работать с датами и временными метками без часового пояса.

Если вы хотите работать с датами без часовых поясов, вам следует игнорировать форматированные строковые представления этих дат. Просто разберитесь с ними программно или используйте библиотеку дат, которая позволяет форматировать дату с использованием часового пояса, который вы предпочитаете.

...