Estoy tratando de convertir la siguiente fecha en un objeto Date () de JavaScript. Cuando lo recupero del servidor, es un objeto Timestamp,

Captura de pantalla de la consola de Firebase Firestore:

enter image description here

Cuando intento lo siguiente en una lista de objetos devueltos de firestore:

  list.forEach(a => {
    var d = a.record.dateCreated;
    console.log(d, new Date(d), Date(d))
  })

Me sale este resultado: ingrese la descripción de la imagen aquí

Claramente, las marcas de tiempo son todas diferentes, y no todas son la misma fecha del 09 de septiembre de 2018 (que es hoy). Tampoco estoy seguro de por qué new Date(Timestamp) da como resultado un invalid date. Soy un poco un novato de JS, ¿estoy haciendo algo mal con las fechas o las marcas de tiempo?

83
blueether 9 sep. 2018 a las 21:28

3 respuestas

La mejor respuesta

El constructor de una fecha de JavaScript no sabe nada sobre Firestore Timestamp objetos: no sabe qué hacer con ellos.

Si desea convertir una marca de tiempo en una fecha, use toDate ( ) en la marca de tiempo.

78
Doug Stevenson 3 may. 2019 a las 20:19

Cómo convertir la marca de tiempo de Unix en un objeto de fecha de JavaScript.

var myDate = a.record.dateCreated;
new Date(myDate._seconds * 1000); // access the '_seconds' attribute within the timestamp object
2
Dilshan Liyanage 25 sep. 2019 a las 18:07

Utilice el método toDate () y luego conviértalo al formato usando una tubería angular como esta:

{{row.orderDate.toDate () | fecha: 'dd MMM hh: mm'}}

7
Naman Sharma 9 ago. 2019 a las 20:27