java如何在firebase中运行查询以检索具有当前日期的对象?
我只希望检索当前日期的对象。我在firebase数据库中有如下JSON结构
尝试了此操作,但没有正确显示任何内容:
Calendar now = Calendar.getInstance();
int year = now.get(java.util.Calendar.YEAR);
int month = now.get(java.util.Calendar.MONTH);
int day = now.get(java.util.Calendar.DAY_OF_MONTH);
query = mDatabase.orderByKey().orderByChild("date").equalTo(now.toString());
Firebase数据库中的示例JSON数据
"n4VB8b3Q7SfRrR8ezdaaUaLRHn93"(uid) : {
"-LcGXirH22zeZvaFuOzA"(timestamp) : {
"date" : {
"date" : 12,
"day" : 2,
"hours" : 20,
"minutes" : 4,
"month" : 2,
"seconds" : 0,
"time" : 1552399440382,
"timezoneOffset" : -360,
"year" : 119
},
"id" : "-LcGXirH22zeZvaFuOzA",
"name" : "Testing with year",
"note" : "with year"
},
"-LcGcoUtkFRtP-ugp2kO" : {
"date" : {
"date" : 12,
"day" : 2,
"hours" : 20,
"minutes" : 1,
"month" : 2,
"seconds" : 0,
"time" : 1552399260794,
"timezoneOffset" : -360,
"year" : 119
},
"id" : "-LcGcoUtkFRtP-ugp2kO",
"name" : "Testing for today",
"note" : "Testing for today"
}
我希望输出仅为当前日期的事件
# 1 楼答案
Firebase数据库查询只能对单个属性进行排序/筛选。由于已将日期存储在三个单独的属性中,因此只能对其中一个属性进行排序/筛选
例如,要获取2019年的子节点,需要执行以下操作:
您会注意到,上面使用
"date/year"
对嵌套的year
属性进行排序/筛选如果希望能够按整个日期进行筛选,则应以适合筛选的格式将该日期存储在单个属性中。最常见的格式是ISO-8601,它将今天的日期反映为:
或者
这两种方法都有一个优点,即它们是按字典顺序排序的:以这种格式将日期作为字符串排序,结果它们也是按时间顺序排列的
要get a Java date in ISO-8601 format使用
SimpleDateFormat
对象:如果您将上述值存储在
date/iso
中,并希望筛选今天或以后的项目,您应该执行以下操作: