Firestore Timestamp.fromDate не UTC - PullRequest
0 голосов
/ 16 апреля 2019

Кто-нибудь знает, как сохранить метку времени UTC в Firestore?

В моем приложении Angular, если я преобразую сегодняшнюю дату в метку времени, как показано ниже, и я получу UTC+2 (это летнее времяпрямо сейчас в Швейцарии) дата в базе данных Firestore

import {firebase} from '@firebase/app';
import '@firebase/firestore';

const myTimestamp = firebase.firestore.Timestamp.fromDate(new Date());

Если, например, я пытаюсь преобразовать дату из зимнего времени, я получаю UTC+1 метка времени в базе данных

const myTimestamp = firebase.firestore.Timestamp.fromDate(new Date(2019, 0, 1));

Если бы я использовал now(), я бы тоже получил UTC+2 даты

const now: firebase.firestore.Timestamp = firebase.firestore.Timestamp.now();

Я не делаю ничего особенного, когда сохраняю данные:

const now: firebase.firestore.Timestamp = firebase.firestore.Timestamp.now();
const myTimestamp = firebase.firestore.Timestamp.fromDate(new Date());

const myData = {
    created_at: now,
    another_value: myTimestamp
};

await this.collection.add(myData);

Любая идея, как можно создать действительную UTC метку времени для Firestore?

1 Ответ

0 голосов
/ 16 апреля 2019

В метках времени Firestore нет закодированного в них часового пояса. Он просто сохраняет смещение от эпохи Unix, используя комбинацию секунд и наносекунд (которые являются полями объекта Timestamp). Большинство объектов даты / времени похожи на это - их не волнует, что такое timezome, это просто абсолютный момент времени.

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

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

Если вы хотите визуализировать объект Date для определенного часового пояса, вы должны использовать для этого библиотеку, такую ​​как moment.js .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...