当我通过控制面板向 Firebase 实时数据库添加新值时,我想在特定字段中保存当前日期/时间。
我怎样才能做到这一点?
请帮我。
原文由 Leenah 发布,翻译遵循 CC BY-SA 4.0 许可协议
当我通过控制面板向 Firebase 实时数据库添加新值时,我想在特定字段中保存当前日期/时间。
我怎样才能做到这一点?
请帮我。
原文由 Leenah 发布,翻译遵循 CC BY-SA 4.0 许可协议
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");
}
}
});
}
原文由 Goodlife 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
最佳做法是将您的数据保存为
TIMESTAMP
就像这样ServerValue.TIMESTAMP
。还请记住,当您设置
TIMESTAMP
时,您将其设置为Map
,但是当您检索它时,您将其检索为Long
要取回数据,我建议你使用这种方法:编辑: 模型类应该是这样的:
请记住,
ServerValue.TIMESTAMP
只是一个令牌,Firebase 实时数据库在写入操作期间用作子值时会在服务器端将其转换为数字。写入操作完成后,日期才会出现在数据库中。要获得
timestamp
,还有另一种方法,即在 Cloud Functions for Firebase 中编写一个函数,它非常简单:您可以将其托管在 Cloud Function 中,并在无需用户交互的情况下获取服务器时间戳。