当我通过控制面板向Firebase实时数据库添加新值时,我想将当前日期/时间保存在特定字段中。
我怎样才能做到这一点呢?
请帮帮我。
发布于 2017-04-24 17:35:15
最佳实践是将数据保存为像这样的ServerValue.TIMESTAMP格式的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<String, String> timestamp;
public YourModelClass() {}
//public setters and getters for the fields
public void setTimestamp(Map<String, String> timeStamp) {this.timestamp= timestamp;}
public Map<String, String> getTimestamp() {return timestamp;}
}请记住,ServerValue.TIMESTAMP只是一个令牌,当它在写操作期间用作子值时,Firebase实时数据库会在服务器端将其转换为一个数字。该日期仅在写入操作完成后出现在数据库中。
要获得timestamp,还有另一种方法,那就是用Cloud Functions for Firebase编写一个函数,它将像下面这样简单:
exports.currentTime = functions.https.onRequest((req, res) => {
res.send({"timestamp":new Date().getTime()})
})您可以将其托管在Cloud Function中,无需用户交互即可获取服务器时间戳。
发布于 2017-09-01 02:04:22
Alex Mamo是对的,但是在从模型类调用它的情况下,您应该这样传递
public class FirebMessage {
public String message;
public String senderPhoneNumber;
public String receiverPhoneNumber;
public Map time;
public FirebMessage() {
}
public FirebMessage(String message, String senderPhoneNumber, String receiverPhoneNumber, Map time) {
this.message = message;
this.senderPhoneNumber = senderPhoneNumber;
this.receiverPhoneNumber = receiverPhoneNumber;
this.time = time;
}然后按如下方式进行消费
private void writeNewMessage(String message, String receiver,String sender) {
FirebMessage firebMessage = new FirebMessage(message, receiver,sender,ServerValue.TIMESTAMP);
mDatabase.child("messages").push().setValue(firebMessage, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if (databaseError != null) {
Log.e(TAG,"Data Not saved");
} else {
Log.e(TAG,"Data saved successfully");
}
}
});
}发布于 2017-04-24 17:23:32
在Firebase中使用数据类型编号。
在将数据存储到Fireabase.
https://stackoverflow.com/questions/43584244
复制相似问题