如何获取firebase服务器的当前时间戳(以毫秒为单位)?

时间:2016-07-26 14:52:38

标签: android firebase timestamp firebase-realtime-database

我想得到firebase当前的时间戳,但却无法找到获得它的方法。我想保存孩子,如图所示。为此,我得到时间戳并相应地得到日期。请帮忙......

here is the result I want to get

4 个答案:

答案 0 :(得分:24)

您可以使用ServerValue.TIMESTAMP Map<String, String>类型{".sv" : "timestamp"}来设置服务器时间。当它被发送到firebase数据库时,它将被转换为1469554720这样的长Unix epoch time

问题是,您不能直接将其设置为密钥。最好的方法是将时间戳放在对象中,并使用DatabaseReference.push()来获取保证的唯一键。

例如

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
String key = ref.push().getKey(); // this will create a new unique key
Map<String, Object> value = new HashMap<>();
value.put("name", "shesh");
value.put("address", "lucknow");
value.put("timestamp", ServerValue.TIMESTAMP);
ref.child(key).setValue(value);

如果你想用这种格式(dd-mm-yyyy)保存它,那就是黑客攻击,但不建议这样做。您需要先将它(ServerValue.TIMESTAMP)保存到另一个临时节点,然后在使用Date类将其转换为该格式之前检索时间戳。

答案 1 :(得分:3)

实际上,您可以使用云功能,并通过HTTP请求获取时间戳。 功能很简单。

exports.getTimeStamp = functions.https.onRequest((req, res)=>{
  res.setHeader('Content-Type', 'application/json');
  res.send(JSON.stringify({ timestamp: Date.now() }));
});

答案 2 :(得分:1)

在Android上,我是这样做的

index.js /服务器端

const functions = require('firebase-functions'); 
exports.stamp = functions.https.onCall(() => {
       var d = new Date();
       console.log('TimeStamp_now : '+d.getTime());
       return { timeStamp: d.getTime() };          
   });

someclass.kt /客户端

lateinit var functions: FirebaseFunctions
var ret :Long = 0

FirebaseApp.initializeApp(this)
functions = FirebaseFunctions.getInstance()


val returnFC = functions.getHttpsCallable("stamp").call()
    returnFC.continueWith { task ->
    val resultFC = task.result?.data as Map<String, Any>
        resultFC["timeStamp"] as Long
    ret = "${resultFC["timeStamp"]}".toLong()
    val cal = Calendar.getInstance()
        cal.timeInMillis = "$ret".toLong()
    var date = DateFormat.format("dd-MM-yyyy", cal).toString()
    Log.d("current date:", date)
    Log.d("timeStamp_from_function :", "$ret")
    resultFC
}
    returnFC.addOnSuccessListener {
        Log.d("OnSuccessListener :", "success")
}    
    returnFC.addOnFailureListener {
        Log.d("OnFailureListener:", "failure")
}

我得到了退货并到达:TimestampConvert看起来很棒

答案 3 :(得分:0)

如果您通过React-Native for Android Development使用Javascript,则可以尝试使用内置Javascript Date()方法手动获取日期。

示例代码:

async OnFunction() {
  var today = new Date();
  var dd = today.getDate();
  var mm = today.getMonth() + 1;
  var yyyy = today.getFullYear();
  if (dd < 10) {
    dd = '0' + dd
  }
  if (mm < 10) {
    mm = '0' + mm
  }
  today = dd + '-' + mm + '-' + yyyy;

  await firebase.database().ref('/data_Location/' + today).push(this.state.dataToBeWritten)
}