我在 Firestore 中有数据,我正在比较其中的时间对象。
当我查询其他对象如 "ref"和 "title"
时,查询成功返回了一些数据,但随着时间的推移它没有返回任何东西。
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/