Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以字符串格式存储日期时如何使用orderBy_Android_Date_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 以字符串格式存储日期时如何使用orderBy

Android 以字符串格式存储日期时如何使用orderBy,android,date,firebase,firebase-realtime-database,Android,Date,Firebase,Firebase Realtime Database,使用Firebase,日期在Firebase数据库中以字符串格式存储为:dd/MM/yyyy。 当使用orderBy按日期排序条目时,我没有得到期望的结果 dbInstance.orderByChild("eventDate").startAt(currentDate).addListenerForSingleValueEvent(eventListener); 这是我用来显示条目的。它很好用。但问题在于日期排序不正确 因此,如果今天是2017年5月2日,上图中带有日期的条目将不会显示,因为

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

dbInstance.orderByChild("eventDate").startAt(currentDate).addListenerForSingleValueEvent(eventListener);
这是我用来显示条目的。它很好用。但问题在于日期排序不正确

因此,如果今天是2017年5月2日,上图中带有日期的条目将不会显示,因为在比较这两个字符串时,图像中的字符串更小


如何纠正这一点?请帮忙

最佳做法是将数据保存为
时间戳
,如下所示:
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";
    }
}
为了解决您的问题,您只需要基于正确的
数据库引用
orderByValue(“timestamp”)创建查询


希望有帮助。

不要将日期存储为字符串。我认为最好将其解析为时间而不是字符串。当您查询字符串时,Firebase将按字典顺序排列项目。看见