Как преобразовать метку времени Firebase Firestore в формат даты и времени Zulu в Firebase Function - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть поле метки времени в документе Firestore. (см. create_at)

datetime

Я хочу передать его серверу в формате времени Datetime Zulu, как показано ниже.

2019-10-31T10:29:45Z

Как мне преобразовать временную метку Firestore в строку формата времени Zulu?

вот моя функция onCreate в Firebase, при создании документа в firestore я читаю поле временной метки и печатаю в консоль

exports.createRecord = functions.firestore
  .document(`record/{recordId}`)
  .onCreate(async (snap, context) => {

  console.log(snap.data().created_at);

});  

Это будет отображаться в журналах Firebase Function

Timestamp { _seconds: 1573496322, _nanoseconds: 897429000 }

Как я могу преобразовать это, чтобы выглядеть в этой форме:

2019-11-01T01:36:56.233018Z
2019-01-01T00:00:00Z
2019-10-31T10:29:45Z

1 Ответ

0 голосов
/ 12 ноября 2019

Объект отметки времени Firestore не является расширением объекта Javascript Date. Но он содержит метод toDate для получения обычного объекта Date, который можно использовать для простого форматирования необходимой даты в строку.

Облачные функции запускаются безсмещение часового пояса (время UTC). Таким образом, вы эффективно получаете время зулу, когда форматируете даты. Используйте toISOString, чтобы получить строку в требуемом формате

Метод toISOString () возвращает строку в упрощенном расширенном формате ISO (ISO 8601), который всегда равен 24 илиДлина 27 символов (ГГГГ-ММ-ДДЧЧ: мм: сс.сссZ или ± ГГГГГ-ММ-ДДТЧЧ: мм: сс.сссZ соответственно). Часовой пояс всегда равен нулевому смещению UTC, что обозначается суффиксом «Z».

Попробуйте изменить приведенный выше код на этот, и вы увидите ожидаемый результат.

exports.createRecord = functions.firestore
  .document(`record/{recordId}`)
  .onCreate(async (snap, context) => {

  console.log(snap.data().created_at.toDate().toISOString());

});  

Дополнительные ресурсы

Moment JS - отличная и простая в использовании библиотека, если вам требуется более сложное управление датами или работа с часовыми поясами. Это добавляет некоторые накладные расходы к вашей функции зависимости, но это действительно помогает удобочитаемости вашего кода.

...