Проблема запроса Firestore при сравнении метки времени - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть данные в Firestore, и я сравниваю в них объект времени.

Когда я выполняю запрос с другим объектом, таким как "ref" and "title", запрос возвращает некоторые данные успешно, но со временем он ничего не возвращает.

enter image description here

String dateString = "9-26-2018";

Я конвертирую эту дату в timestamp и передаю запрос:

Timestamp timestamp = new Timestamp(dateString);

DateFormat df = DateFormat.getDateTimeInstance();
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date utcTime = new Date(df.format(date));

System.out.println("MyDates >>" +utcTime + " >> "+ timestamp.toDate());

CollectionReference ref = db.collection("news");
Query newsQuery = ref.whereEqualTo("time", utcTime );

mNewsList.clear();
newsQuery.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        System.out.println("DocumentData >> " + task.getResult().size());
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            News news = document.toObject(News.class);
                            mNewsList.add(news);
                        }
                        // refreshing recycler view
                        mAdapter.notifyDataSetChanged();

                        // stop animating Shimmer and hide the layout
                        mShimmerViewContainer.stopShimmerAnimation();
                        mShimmerViewContainer.setVisibility(View.GONE);
                    } else {
                        System.out.println("Error getting documents."+ task.getException());
                    }
                }
            });

Что яполучение task.getResult().size() = 0

Итак, мой вопрос, как сравнить метку времени в Firestore?

ОБНОВЛЕНИЕ >> Вывод даты >>

MyDates >>Tue Sep 25 18:30:00 GMT+05:30 2018 >> Wed Sep 26 00:00:00 GMT+05:30 2018

1 Ответ

0 голосов
/ 30 сентября 2018

Вы получаете task.getResult().size() = 0, потому что вы передаете свой запрос методу whereEqualTo() в качестве второго аргумента примитиву long, а не Date объекту.Для правильного использования метода Firestore Query whereEqualTo (String field, Object value) , пожалуйста, преобразуйте длинное значение в объект Date, прежде чем использовать его следующим образом:

long time = 1538306225;
Timestamp timestamp = new Timestamp(time);
Date date = new Date(timestamp.getTime());
Query newsQuery = ref.whereEqualTo("time", date);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...