当我使用getDateLastChangedLong方法加载TimeStamp值时,它会产生NullPointerException。如何将其转换为Long。
] 4
答案 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";
}
}