Google функционирует дата пожарного магазина - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь сохранить данные в firestore из функций, но у меня проблема с датами. Моя функция:

const newScheduleEventRef = db.collection('scheduleEvents').doc();  
batch.set(newScheduleEventRef, {
  user_id: context.auth.uid,  
  category: 1,
  startDate1: new Date(year, month, day, 0, 0, 0),  
  startDate2: new Date(year, month, day, 0, 0, 0),
  endDate1: new Date(year, month, day, 23, 59, 59),
  endDate2: new Date(year, month,day, 23, 59, 59),
  eventAlias: entry,
  addDate: new Date()
});

И вот что я получаю:

enter image description here

Это, вероятно, из-за TimeZone, но я не знаю, как ее решить.

Спасибо.

1 Ответ

1 голос
/ 14 января 2020

Поля временных отметок Firestore фактически не хранят в них часовые пояса. Фактически, ни один не делает JavaScript объекты Date. Когда вы пишете поле Timestamp, вы всегда основаны на UT C. Согласно документации API для Timestamp :

Timestamp представляет момент времени, независимый от любого часового пояса или календаря, представленный в виде секунд и долей секунд с наносекундным разрешением в UT C Время эпохи.

То, что вы видите, это консоль Firestore, отображающая эти даты с использованием часового пояса, настроенного на вашем локальном компьютере. Если вы попросите кого-нибудь по всему миру взглянуть на одну и ту же вещь, он увидит тот же момент времени, но с другим часовым поясом.

Если вы хотите написать метку времени с указанными c часами время в указанном c часовом поясе, вы должны использовать некоторую библиотеку манипулирования датами, например, Moment JS, чтобы убедиться, что у вас есть подходящий момент времени для часового пояса, который вы намереваетесь.

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