如何使用POJO类在Long中获取Firebase ServerValue.Timestamp

时间:2017-11-18 06:21:38

标签: android android-studio firebase firebase-realtime-database

当我使用getDateLastChangedLong方法加载TimeStamp值时,它会产生NullPointerException。如何将其转换为Long。bUTTON cLICK Exception

Date Uploaded[![][2]] 4

1 个答案:

答案 0 :(得分:0)

要在Firebase数据库中设置TIMESTAMP,您需要将该字段声明为Map而不是我所见的对象,然后使用ServerValue.TIMESTAMP之类的这样:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
Map<String, Object> map = new HashMap<>();
map.put("time", ServerValue.TIMESTAMP);
yourRef.child("yourNode").updateChildren(map);

请注意,当您在Firebase数据库中设置TIMESTAMP时,您将其设置为Map,当您检索它时,您将其检索为long

您的POJO课程应如下所示:

public class ImageUpload {
    private Map<String, String> timeStamp;
    //other fields

    public Map<String, String> getTimeStamp() {
        return timeStamp;
    }

    public void setTimeStamp(Map<String, String> timeStamp) {
        this.timeStamp = timeStamp;
    }

    //other setters and getters.
}

为了使用公共getter getTimeStamp()获取时间戳,您需要在ImageUpload节点上附加一个侦听器并迭代dataSnapshot对象中的数据。

如果您还要将数据转换回来,我建议您使用以下方法:

public static String getTimeDate(long timeStamp){
    try{
        DateFormat dateFormat = getDateTimeInstance();
        Date netDate = (new Date(timeStamp));
        return dateFormat.format(netDate);
    } catch(Exception e) {
        return "date";
    }
}