Я сохраняю свои данные в файлах (Google Firebase.Firestore), которым при создании присваивается дата в виде идентификатора. Файлы помещаются в коллекцию «События». Структура выглядит так:
Document 14-Jan-2019
ID: 1547504172
pr: "true"
po: "false"
Document 17-Jan-2019
ID: 1547763372
pr: "false"
...
Document 20-Jan-2019
ID: 1548025154
pr: "true"
Document 21-Jan-2019
ID: 1548107873
pr: "true"
идентификаторы создаются следующим образом:
long ID = (long) Date().getTime()/1000
Существует еще одна коллекция под названием "Habits", которая содержит объекты HabitInfo.
Document pr (object HabitInfo)
name: "pr"
startDay: 1547504172 //14-Jan-2019
points: 12 ...
Каждый объект имеет параметр startDay, который указывает начало наблюдаемой недели.
Я хотел бы получить все файлы, даты создания которых (в виде длинных чисел) меньше, чем семь дней после моего startDay. Время дня не имеет значения, только дата.
Я пытался сделать что-то вроде этого:
CollectionReference colRef = db.collection("events");
Query query = colRef.whereGreaterThanOrEqualTo("ID", hInfo.startDay)
.whereLessThan("ID", hInfo.startDay + 7*24*60*60);
Проблема в том, что разница во времени между двумя моими идентификаторами может превышать 7 дней (в секундах), поскольку они записываются в разное время дня. Например, понедельник 14-го в 7 утра. и понедельник 21-го в 3 часа дня более семи дней, если смотреть на значения в секундах.
Как получить диапазон, учитывающий только даты?