Estoy buscando la solución para este problema desde hace mucho tiempo, no pude descubrir qué es lo que realmente está causando esto. Estoy haciendo un proyecto en el que algunos módulos dependen de varios cálculos de fecha y hora, el usuario ingresa la fecha y la hora en un archivo csv como este. 
estoy leyendo ese archivo y formateo la fecha y la hora usando la biblioteca momenttz, a continuación se muestra el código.
const getTimestamp = (time_array,date_object) => { let year = date_object.substr(0,4); let month = (parseInt(date_object.substr(4,2)) -1); let date = date_object.substr(6,2); let hour = parseInt(time_array[0]); let minute = parseInt(time_array[1]); let second = parseInt(time_array[2]); console.log("hr ",hour, " minutes ", minute, " second ", second); let momentTime = moment.utc({ years:year, months:month, date:date, hours:hour, minutes:minute, seconds:second}); console.log("momentTime",momentTime); // this log shows correct date and time as mentioned in csv (Moment<2021-09-21T13:25:00Z>) const firestore = admin.firestore; return firestore.Timestamp.fromDate(momentTime.valueOf()); }luego pasar esto a firebase add/update query. esto funciona bien en el emulador local, mostrando la fecha y la hora correctas. por ejemplo, si paso 13:25:00, se almacena igual en el emulador local de Firestore.
Pero en la consola de firestore se guarda el tiempo incorrecto (18:55:00 UTC +5:30) 5 horas y 30 minutos más de lo que proporcioné. 
incluso cambié la zona horaria del sistema a la zona horaria de Clint (zona de Tokio) para verificar si se debe a la zona horaria, pero aún así son 9.5 horas más que la hora del cliente.
Nota : sé que Firestore no se preocupa por la zona horaria y almacena la marca de tiempo en formato de época. Cómo puedo resolver este problema?