【问题标题】:how to get Firebase ServerValue.Timestamp in Long using POJO Class如何使用 POJO 类在 Long 中获取 Firebase ServerValue.Timestamp
【发布时间】:2017-11-18 06:21:38
【问题描述】:

当我使用 getDateLastChangedLong 方法加载 TimeStamp 值时,它会给出 NullPointerException。我如何将其转换为 Long.

]4

【问题讨论】:

  • 我不确定,但我认为日期的类型应该是 long,因为它是一个 unix 时间戳而不是 Object 并且 date 字段的 getter 和 setter 应该是 getDate 和 @987654330 @ 而不是你给的任何其他方法名称 getDateLastChangeLong

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


【解决方案1】:

为了在 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";
    }
}

【讨论】:

  • 但我想从 POJO 而不是从 firebase 数据库中检索它
  • POJO 是数据库的镜像。换句话说,POJO 助手类有助于从数据库中获取数据。请查看我的更新答案。
  • getter 方法将检索键以及值或只是值。
  • getTimeStamp() 将只检索long 的值。一旦你有了值,你就可以使用上面的方法进行转换。
  • 我想使用 imageUpload 构造函数将时间戳插入到 Firebase 数据库中。请您编辑代码
猜你喜欢
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 1970-01-01
相关资源
最近更新 更多