首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在向Firebase实时数据库添加新值时保存当前日期/时间

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

Stack Overflow用户
提问于 2017-04-24 17:20:59
回答 3查看 41.6K关注 0票数 19

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

我怎样才能做到这一点呢?

请帮帮我。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-24 17:35:15

最佳实践是将数据保存为像这样的ServerValue.TIMESTAMP格式的TIMESTAMP

代码语言:javascript
复制
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Map map = new HashMap();
map.put("timestamp", ServerValue.TIMESTAMP);
ref.child("yourNode").updateChildren(map);

还要记住,当您设置TIMESTAMP时,您将其设置为Map,但是当您检索它时,您将其作为Long检索。为了取回数据,我建议您使用以下方法:

代码语言:javascript
复制
public static String getTimeDate(long timestamp){
    try{
        DateFormat dateFormat = getDateTimeInstance();
        Date netDate = (new Date(timestamp));
        return dateFormat.format(netDate);
    } catch(Exception e) {
        return "date";
    }
}

编辑:模型类应如下所示:

代码语言:javascript
复制
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编写一个函数,它将像下面这样简单:

代码语言:javascript
复制
exports.currentTime = functions.https.onRequest((req, res) => {
    res.send({"timestamp":new Date().getTime()})
})

您可以将其托管在Cloud Function中,无需用户交互即可获取服务器时间戳。

票数 28
EN

Stack Overflow用户

发布于 2017-09-01 02:04:22

Alex Mamo是对的,但是在从模型类调用它的情况下,您应该这样传递

代码语言:javascript
复制
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;
    }

然后按如下方式进行消费

代码语言:javascript
复制
 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");
                }
            }
        });
    }
票数 3
EN

Stack Overflow用户

发布于 2017-04-24 17:23:32

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

在将数据存储到Fireabase.

  • While中时,检索数据时,您将获得以前存储的
  1. 。解析成Java Date实例并进一步工作。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43584244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档