Estoy tratando de almacenar una marca de tiempo en Firestore desde Firebase Functions. Sin embargo, la hora incorrecta se registra en Firestore.
Por ejemplo, quiero almacenar la hora UTC: 14 de agosto de 2021 21 h (9 p. m.)
Nota: este código está en mi función Firebase
const date = new Date(Date.UTC( csvRow.startDateYear, csvRow.startDateMonth, csvRow.startDateDay, csvRow.startDateHour, csvRow.startDateMinute )) console.log(date); // prints 2021-08-14T21:00:00.000Z (correct) console.log('date.getTime():' + date.getTime()); // prints 1628974800000 (correct) const timeStamp = admin.firestore.Timestamp.fromMillis(date.getTime()); console.log('timeStamp.toMillis():' + timeStamp.toMillis()); // prints 1628974800000 (correct) write.startDate = timeStamp;
Pero cuando realmente miro Firestore y veo lo que está grabado, obtengo esto, una marca de tiempo que tiene 7 horas de retraso:
También probé Timestamp.fromDate(date)
pero obtuve el mismo resultado
Las marcas de tiempo de Firebase Firestore se separan cuando se usan horas porque no tienen zonas horarias integradas. Están destinados a representar un mayor período de tiempo, no para zonas horarias específicas (hora).
Pruebe esta función y vea si funciona correctamente:
var myTimestamp = firebase.firestore.Timestamp.fromDate(new Date());
Si está intentando esto con Cloud Functions, intente lo siguiente:
admin.firestore.Timestamp.fromDate()
Documentación detallada: https://firebase.google.com/docs/reference/node/firebase.firestore.Timestamp