Дата Firestore теряет смещение часового пояса после поиска и сохранения обратно в базу данных

Мой местный часовой пояс UTC+2.

Я создаю приложение NativeScript с элементом управления RadCalendar, в котором пользователь может выбирать даты. В моем сценарии пользователь выбирает 29, 30 и 31 января 2018 года.

console.dir() Вывод выбранных дат показывает следующее:

=== dump(): dumping members ===
JS: [
JS:     "2018-01-28T22:00:00.000Z",
JS:     "2018-01-29T22:00:00.000Z",
JS:     "2018-01-30T22:00:00.000Z"
JS: ]
JS: === dump(): dumping function and properties names ===

Очевидно, что RadCalendar конвертирует значения в UTC, что круто. Затем я сохраняю эти даты в своей базе данных Firestore, где они хранятся по моему местному времени и с сохранением информации о часовом поясе, как показано на этом снимке экрана моей консоли FireStore:

Все идет нормально. Теперь проблема возникает, когда я читаю эти записи из базы данных FireStore обратно в мое приложение (и в элемент управления RadCalendar .selectedDates имущество).

После обратной записи console.log() полученного снимка документа выглядит следующим образом:

{
"theDate":"Jan 31, 2018 12:00:00 AM",
"available":false,
"memberUid":"N76BviTCX8fLdErAjMHYqx2GEU63",
"organizationUid":"zv5A7UC8B7bKzePGPyaJ"
}

Обратите внимание, что информация о часовом поясе исчезла. Я полагаю, что в этот момент исполняемый код все еще "учитывает местный часовой пояс", а дата (для моего местного часового пояса) не является неправильной. Но проблема возникает при изменении свойства 'available' и сохранении записи обратно в FireStore.

Посмотрите, как выглядит значение даты в консоли FireStore:

Обратите внимание, что это больше не дата в FireStore, а строка.

Отладчик Chrome DevTools для NativeScript фактически показал, что в момент извлечения данных обратно в приложение извлекаемое свойство даты уже является строкой, а не датой. Стоит упомянуть, что я использую этот плагин NativeScript-Firebase для взаимодействия с Firestore... может ли быть проблема с корнем в этой библиотеке плагинов?

Как я могу гарантировать, что значения, которые я получаю из базы данных FireStore, будут сохранены как даты в моем коде?

0 ответов

Другие вопросы по тегам