2017-05-02 41 views
0

使用Firebase時,日期以字符串格式存儲在Firebase數據庫中:dd/MM/yyyy。
使用orderBy按日期排序輸入時,我的結果並不理想。如何在DATE以字符串格式存儲時使用orderBy

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

這是我用來顯示條目。它工作正常。但問題是日期沒有正確排序。

enter image description here

所以,如果今天是17年2月5日,同日在上面的圖片進入不會顯示因爲比較這兩個字符串,將一個圖像中的更小。

這怎麼解決?請幫忙!!

+2

不要將您的日期存儲爲字符串 – ianhanniballake

+0

我認爲最好將其解析爲時間而不是字符串。 – Ibrahim

+1

當您查詢字符串時,Firebase將按照字典順序排列項目。請參閱http://stackoverflow.com/questions/38216858/firebase-query-by-date-string/38226376#38226376 –

回答

0

最佳做法是將數據保存爲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");

希望它有幫助。

相關問題