如何从Firebase检索日期值为距当前日期1个月前的数据

时间:2019-03-17 11:23:15

标签: java android firebase firebase-realtime-database

 SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm");
    Calendar c = Calendar.getInstance();
    String date = sdf.format(c.getTime());

我使用此代码获取当前时间。但是我想在1个月前从firebase获取所有数据。我必须添加什么代码?我用这段代码检索了所有内容而没有进行任何比较

 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");

            }
        }

谢谢

1 个答案:

答案 0 :(得分:0)

首先,如果要以字符串表示形式存储和查询日期,则应将它们存储在ISO 8601 standard上,这会使字符串日期的字典顺序也按时间顺序排列。因此,您应该存储dd-MM-yyyy HH:mm而不是yyyy-mm-dd HH:mm

但是请注意将日期存储为字符串,因为您的案例不存储时区。考虑使用Firestore, which as a Timestamp data type还是将其存储为字符串,请确保还存储完整的时间戳格式,包括时区: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");

            }
        }

最后,如果您来自SQL背景,那么以下是一些不错的入门Firebase视频:The Firebase Database For SQL Developers