繁体   English   中英

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

[英]How to retrieve data from firebase where the value of a date is 1 month ago from current date

 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标准中 ,该标准使字符串日期的字典顺序也按时间顺序排列。 因此,您应该存储yyyy-mm-dd HH:mm而不是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");

            }
        }

最后,如果您来自SQL背景,那么以下是一些不错的视频,可以从Firebase入门: 适用于SQL开发人员的Firebase数据库

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM