React Native Parse Firestore 时间戳

Posted

技术标签:

【中文标题】React Native Parse Firestore 时间戳【英文标题】:React Native Parse Firestore Timestamp 【发布时间】:2018-10-22 17:16:08 【问题描述】:

我意识到关于如何在 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",
  ,

如何将其解析为简单的日期或日期时间?

【问题讨论】:

你的查询怎么样?使用 admin sdk,如果我有一个 DocumentSnapshot 对象并在字段名上执行 .get,我会得到一个标准的 javascript Date 对象。我猜你可能没有在你的 react-native 应用程序中使用 admin sdk,但我会假设 javascript 库以相同的方式返回给定类型的字段?也许不是,而且文档在这方面肯定不是很清楚。 我也有同样的问题。你做了什么? 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案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>

【讨论】:

以上是关于React Native Parse Firestore 时间戳的主要内容,如果未能解决你的问题,请参考以下文章

React native http post got Json Parse error: Unrecognized token '<'

我应该构建本地数据层/应用程序状态来维护 React Native/Firestore 应用程序中的状态吗?

使用 React Native 解析服务器

React Native:无法解析模块 fs

React Native Autolinking 源码深入分析

React Native Autolinking 源码深入分析