java - 比较时间戳时的 Firestore 查询问题

标签 java android firebase google-cloud-firestore

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

当我查询其他对象如 "ref"和 "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());
                    }
                }
            });

What I am getting is 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

最佳答案

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

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

关于java - 比较时间戳时的 Firestore 查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52575049/

相关文章:

c# - 标志文件和数据文件的改进?

android - 无法在 SwipeFlingAdapterView 中显示项目

android - ServiceLoader.load 没有找到 META-INF/services

java - Firebase 将数据添加到数据库

java - 如何克服这个异常

java - Google App Engine Java 和 Android 入门

Android HTC Flyer - 使用 MotionEvents 捕捉手写笔

ios - Firebase 崩溃报告 iOS - 无法读取的崩溃 - 上传符号文件?

javascript - 使用 javascript 将产品数据从 Firestore 加载到网页

java - 如何保持套接字输出流打开并多次写入