2017-05-02 4 views
0

Firebaseを使用すると、日付はFirebase DBのString形式でdd/MM/yyyyとして格納されます。
orderByを使用して日付順に商品を注文すると、結果が得られません。DATEが文字列形式で格納されている場合のorderByの使用

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

これは私がエントリを表示するために使用しているものです。それはうまく動作します。しかし問題は、日付が正しくソートされていないことです。今日は02/05/17であれば

enter image description here

ので、上記画像の日付のエントリは、これらの2つの文字列を比較するには、画像内の1つの方が小さい表示されません。

これをどのように修正できますか?助けてください!!

+2

日付を文字列として保存しないでください – ianhanniballake

+0

文字列ではなく時間として解析するほうがよいと思います。 – Ibrahim

+1

文字列を照会すると、Firebaseはアイテムを辞書順に並べ替えます。 http://stackoverflow.com/questions/38216858/firebase-query-by-date-string/38226376#38226376を参照してください。 –

答えて

0

ベストプラクティスは、データをTIMESTAMPServerValue.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");

よりもベースのクエリを作成する必要があります

希望します。

関連する問題