比较时间戳时出现Firestore查询问题

时间:2018-09-30 05:52:52

标签: java android firebase google-cloud-firestore

我在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 :(得分:2)

之所以得到task.getResult().size() = 0,是因为您将查询作为第二个参数传递给whereEqualTo()方法而不是long对象作为第二个参数。为了以正确的方式使用Firestore Query的whereEqualTo(String field, Object value)方法,请在将long值转换为Date对象之前使用它,如下所示:

Date