React Native Parse Firestore 时间戳

IT技术 javascript reactjs firebase google-cloud-firestore
2021-05-18 22:52:41

我意识到关于如何在react中解析 firebase/firestore 时间戳绝对有 0 个文档。

正如这里所示 https://firebase.google.com/docs/reference/android/com/google/firebase/Timestamp

firebase 中的时间戳由秒和毫秒组成。

var newobj={
        uid_to:'K365J32fddel3QTxGG94VksXtQP2',
        uid_from:'RqVngIRyiJV2XTogLSONZIqoe5h1',
        monto:23,
        fecha:new Date(),
        user:{
            from_name:"fabri"
        },
        status:'pending'
    }
    firestore.collection('transacciones').add(newobj);
  }

然后在控制台中显示为这样

在此处输入图片说明

当我进行查询时,它会带来这个

Object {
  "fecha": Timestamp {
    "nanoseconds": 960000000,
    "seconds": 1526130923,
  },
  "monto": 23,
  "status": "pending",
  "uid_from": "RqVngIRyiJV2XTogLSONZIqoe5h1",
  "uid_to": "K365J32fddel3QTxGG94VksXtQP2",
  "user": Object {
    "from_name": "fabri",
  },
}

我如何将其解析为一个简单的日期,或再次日期时间?

3个回答

我也为此苦苦挣扎,因为我在 SO 或其他任何地方都没有找到答案,这是我通过反复试验得到的解决方案。为了完整起见,我将时间戳字段保存到文章集合中:

saveArticle() {
  firebase.firestore().collection('articles').add({ 
    title: this.state.title,
    createdAt: firebase.firestore.FieldValue.serverTimestamp(),
  })
}

然后要显示日期,您需要调用对象的 toDate() 方法,将其转换为 JavaScript Date 对象,然后将其转换为日期字符串。所以在渲染中我有以下内容。希望这可以节省一些时间。

<Text>{new Date(this.state.article.createdAt.toDate()).toDateString()}</Text>

只需调用.toDate()firestore 时间戳对象即可将其转换为 JS 日期对象。

所以对你来说,它会是这样的object.fecha.toDate()然后您可以使用它来比较日期或使用任何其他日期方法。然后,您也可以将其传递给 moment。

您不必一定要使用该serverTimestamp()方法设置时间,使用new Date()就可以了。

我遇到了同样的问题并通过以下方式解决了它。您可以将日期转换为字符串dateObj.toString()new Date().toString. 然后,当您从 fireStore 收到该字符串时,只需像这样将其转换回时间即可new Date(timeObjReceivedFromFireStore)