Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较时间戳时Firestore查询问题_Java_Android_Firebase_Google Cloud Firestore - Fatal编程技术网

Java 比较时间戳时Firestore查询问题

Java 比较时间戳时Firestore查询问题,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我在Firestore中有数据,我正在比较其中的时间对象 当我使用其他对象(如“ref”和“title”)进行查询时,query会成功地返回一些数据,但随着时间的推移,它不会返回任何数据 我正在将此日期转换为时间戳并传入查询: Timestamp timestamp = new Timestamp(dateString); DateFormat df = DateFormat.getDateTimeInstance(); df.setTimeZone(TimeZone.getTimeZone

我在Firestore中有数据,我正在比较其中的时间对象

当我使用其他对象(如
“ref”和“title”)进行查询时,query会成功地返回一些数据,但随着时间的推移,它不会返回任何数据

我正在将此日期转换为时间戳并传入查询:

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
,因为您将查询作为第二个参数传递给
whereEqualTo()
方法,它是一个原语
long
而不是
Date
对象。为了正确使用Firestore查询的方法,请先将长值转换为日期对象,然后再按如下方式使用:

long time = 1538306225;
Timestamp timestamp = new Timestamp(time);
Date date = new Date(timestamp.getTime());
Query newsQuery = ref.whereEqualTo("time", date);

我按照您上面提到的方法进行操作,但没有返回任何结果:(我的问题与这个问题完全相同。当我对其他字段使用whereEqual时,它工作得很好,但对时间戳不起作用。请帮助我:)@IsuruBandara如果没有看到您正在使用的代码,就很难说出什么是错的。因此,请使用自己的问题发布一个新问题,这样我和其他Firebase开发人员可以帮助您。我找到了一个解决方案。我必须重复多次*1000,否则它不会显示任何结果:D。
MyDates >>Tue Sep 25 18:30:00 GMT+05:30 2018 >> Wed Sep 26 00:00:00 GMT+05:30 2018
long time = 1538306225;
Timestamp timestamp = new Timestamp(time);
Date date = new Date(timestamp.getTime());
Query newsQuery = ref.whereEqualTo("time", date);