Недопустимая дата для объекта

#javascript #reactjs

Вопрос:

Я получаю документ из firestore, и я уже мог бы показать его в консоли. Вот что показывают данные:

 displayName: "Person1"
items:
  itemAcquired: t {seconds: 1631084326, nanoseconds: 617000000}
  itemName: "Book1"

[[Prototype]]: Object
 

Я попытался отобразить itemAcquired его на экране, но на нем отображалась «Недопустимая дата».:

  <ListItem>
     <Typography>Item Acquired At : </Typography>
          <ListItemText
               primary={new Date(user.items?.itemAcquired).toLocaleDateString()}
             />
           </ListItem>
 

Комментарии:

1. primary={new Date(user.items?.itemAcquired.t.seconds*1e3).toLocaleDateString()}

2. @YevgenGorbunkov там написано «Ошибка типа: Не удается прочитать свойства неопределенного (чтение»секунды»)»

3. Я подозреваю, что некоторые из ваших объектов не будут иметь itemAcquired или иметь последующее t свойство, поэтому используйте необязательную цепочку ?. на всем протяжении.

4. Кроме того, рассмотрите возможность размещения правильно обозначенного объекта для большей ясности.

Ответ №1:

JavaScript Date не знает об объекте метки времени firestore, вы можете использовать функцию ToDate() вместе с функцией toDateString()

 const date = itemAcquired.toDate().toDateString()
 

Также вы можете попробовать

 new Date(temAcquired.seconds * 1000).toUTCString()