如何从 firebase 检索数据,其中日期值是当前日期 1 个月前的数据

2023-12-01

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

            }
        }

thankss


首先,如果您要将日期作为字符串表示形式存储和查询,那么您应该将它们存储在ISO 8601标准这使得字符串日期的字典顺序也是时间顺序。所以而不是dd-MM-yyyy HH:mm你应该存储yyyy-mm-dd HH:mm.

但请注意将日期存储为字符串,因为您的情况不存储时区。考虑使用Firestore,作为时间戳数据类型或者,如果将其存储为字符串,请确保还存储包括时区的完整时间戳格式: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 入门视频:面向 SQL 开发人员的 Firebase 数据库

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 firebase 检索数据,其中日期值是当前日期 1 个月前的数据 的相关文章

随机推荐