Android 以字符串格式存储日期时如何使用orderBy
使用Firebase,日期在Firebase数据库中以字符串格式存储为:dd/MM/yyyy。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日,上图中带有日期的条目将不会显示,因为
当使用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将按字典顺序排列项目。看见