Как получить данные из Firebase, где значение даты 1 месяц назад от текущей даты - PullRequest
2 голосов
/ 17 марта 2019
 SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm");
    Calendar c = Calendar.getInstance();
    String date = sdf.format(c.getTime());

Я использовал этот код, чтобы узнать текущее время. но я хочу получить все данные из firebase 1 месяц назад. что я должен добавить код? Я использовал этот код, чтобы получить все, не сравнивая ничего

 mDatabasetamu.orderByChild("tglkeluar").equalTo(date).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");

            }
        }

thankss

1 Ответ

0 голосов
/ 17 марта 2019

Прежде всего, если вы собираетесь хранить и запрашивать ваши даты в виде строковых представлений, вы должны хранить их по стандарту 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...