React Native Parse Firestore时间戳

时间:2018-05-12 13:21:47

标签: javascript reactjs firebase google-cloud-firestore

我意识到有关如何解析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);
  }

然后在控制台中显示为

enter image description here

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

您不必使用serverTimestamp()方法来设置时间,可以使用new Date()

答案 1 :(得分:0)

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

package com.vz.vbap.desktop

import org.apache.spark.SparkConf
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.streaming.Seconds
import org.apache.spark.sql.hive.HiveContext
import java.sql.Connection
import java.sql.DriverManager
import org.apache.spark.sql.SQLContext    
object TestOneHive {    
  def main(args: Array[String]) {   
    val conf = new SparkConf().setAppName("TestOneHive").setMaster("local[*]") // Set the application name
    val ssc = new StreamingContext(conf, Seconds(15))    
    val sc = ssc.sparkContext       
    val hiveContext = new HiveContext(sc)       
    hiveContext.setConf("hive.metastore.uris", "thrift://localhost:9083")  
    val jdbcDF = hiveContext.read
      .format("jdbc")
      .option("url", "URL")
      .option("dbtable", "tablename")
      .option("user", "user")
      .option("password", "xxxx")
      .option("driver", "org.apache.hive.jdbc.HiveDriver")
      .load()
    println("able to connect------------------")    
    jdbcDF.show()       
  }
} 

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

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

答案 2 :(得分:0)

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