小编典典
最佳做法是TIMESTAMP像这样保存数据ServerValue.TIMESTAMP。
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Map map = new HashMap();
map.put("timestamp", ServerValue.TIMESTAMP);
ref.child("yourNode").updateChildren(map);
还要记住,将设置为时,将其TIMESTAMP设置为Map,但是将其获取时,则将其设置为Long。为了获取数据,我建议您使用以下方法:
public static String getTimeDate(long timestamp){
try{
DateFormat dateFormat = getDateTimeInstance();
Date netDate = (new Date(timestamp));
return dateFormat.format(netDate);
} catch(Exception e) {
return "date";
}
}
编辑:模型类应如下所示:
public class YourModelClass {
//private fields
private Map timestamp;
public YourModelClass() {}
//public setters and getters for the fields
public void setTimestamp(Map timeStamp) {this.timestamp= timestamp;}
public Map getTimestamp() {return timestamp;}
}
请记住,ServerValue.TIMESTAMPFirebase Realtime Database只是一个令牌,当它在写入操作期间用作子值时,它将转换为服务器端的数字。该日期仅在写入操作完成后才出现在数据库中。
要获取timestamp,还有另一种方法,那就是在Cloud Functions for Firebase中编写一个fronction,它很简单:
exports.currentTime = functions.https.onRequest((req, res) => {
res.send({"timestamp":new Date().getTime()})
})
您可以将其托管在Cloud Function中,无需用户干预即可获取服务器时间戳。
2020-03-01