Прежде всего, если вы собираетесь хранить и запрашивать ваши даты в виде строковых представлений, вы должны хранить их по стандарту ISO 8601 , что делает лексикографический порядок строковых дат также хронологическим. Поэтому вместо dd-MM-yyyy HH:mm
вы должны хранить yyyy-mm-dd HH:mm
.
Но остерегайтесь хранить даты в виде строк, поскольку ваш случай не хранит часовой пояс. Попробуйте использовать Firestore, который в качестве типа данных Timestamp , или если вы храните его как строку, убедитесь, что вы также сохраняете полный формат отметки времени, включая часовой пояс: yyyy-mm-ddThh:mm:sszzzz
Сказав, что с вашим текущим форматом даты вам будет трудно запрашивать записи за последний месяц, так как наступает следующий год, и вы получите записи по старым годам, включенные в результаты.
Но если бы вы сохранили дату как yyyy-mm-dd HH:mm
, вы могли бы сделать следующее, чтобы получить все гостевые посещения за последний месяц (с месяца назад и до сегодняшнего дня).
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
String today = sdf.format(Calendar.getInstance().getTime());
String oneMonthAgo = sdf.format(Calendar.getInstance().add(MONTH, -1).getTime());
mDatabasetamu
.orderByChild("tglkeluar")
.startAt(oneMonthAgo )
.endAt(today)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot : dataSnapshot.getChildren()){
Tamu tamu = snapshot.getValue(Tamu.class);
String nama = tamu.getNama();
String checkin = tamu.getTglmasuk();
String checkout = tamu.getTglkeluar();
String kamar = tamu.getKamar();
txtnama.append(nama + "\n \n");
txtcheckin.append(checkin +"\n \n" );
txtcheckout.append(checkout + "\n \n");
txtkamar.append(kamar + "\n \n");
}
}
Наконец, вот несколько хороших видео для начала работы с Firebase, если вы работаете с фоном SQL: База данных Firebase для разработчиков SQL