将新值添加到Firebase实时数据库时如何保存当前日期/时间

当我通过控制面板向Firebase实时数据库添加新值时,我想在特定字段中保存当前日期/时间。

我怎样才能做到这一点?

请帮帮我。

最佳做法是将数据保存为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.TIMESTAMP只是Firebase实时数据库在写入操作期间用作子值时转换为服务器端号码的标记。 写操作完成后,日期仅出现在数据库中。

要获得timestamp ,还有另一种方法,即在Cloud Functions for Firebase中编写一个函数 ,它将如下所示:

 exports.currentTime = functions.https.onRequest((req, res) => { res.send({"timestamp":new Date().getTime()}) }) 

您可以在云function中托管此function,并在无需用户交互的情况下获取服务器时间戳。

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"); } } }); } 

使用数据类型编号到Firebase中。

  1. 在将数据存储到Fireabase时存储当前毫秒数。
  2. 在检索数据时,您将获得先前存储的毫秒数。 解析Java Date Instance并进一步工作。