我想得到firebase当前的时间戳,但却无法找到获得它的方法。我想保存孩子,如图所示。为此,我得到时间戳并相应地得到日期。请帮忙......
答案 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)
}