【问题标题】:How to use orderBy when DATE is stored in String format [duplicate]DATE以字符串格式存储时如何使用orderBy [重复]
【发布时间】:2017-05-03 01:46:59
【问题描述】:

使用 Firebase,日期在 Firebase 数据库中以字符串格式存储为:dd/MM/yyyy。
使用 orderBy 按日期对我的条目进行排序时,我没有得到想要的结果。

dbInstance.orderByChild("eventDate").startAt(currentDate).addListenerForSingleValueEvent(eventListener);

这是我用来显示条目的。它工作正常。但问题在于日期没有正确排序。

因此,如果今天是 02/05/17 ,则上图中带有日期的条目将不会显示,因为在比较这两个字符串时,图像中的字符串较小。

如何纠正?请帮忙!!

【问题讨论】:

  • 不要将日期存储为字符串
  • 我认为最好将其解析为时间而不是字符串。
  • 当您查询字符串时,Firebase 会按字典顺序对项目进行排序。见stackoverflow.com/questions/38216858/…

标签: android date firebase firebase-realtime-database


【解决方案1】:

最佳做法是将数据保存为TIMESTAMP,如下所示:ServerValue.TIMESTAMP,而不是字符串。

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

为了取回数据,我建议你使用这种方法:

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

要解决您的问题,您只需要基于正确的DatabaseReference 而不是orderByValue("timestamp"); 创建查询

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-05
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    相关资源
    最近更新 更多