【问题标题】:Why doesn't the firebase query look like list?为什么 firebase 查询看起来不像列表?
【发布时间】:2018-10-22 02:01:17
【问题描述】:

我正在根据日期查询 firebase。 我找到了我的查询,但它看起来不像 firebase。 这个顺序对我很重要。 另一个图片链接: firebase

 -LP6nkhewJCIGplnE6L4
广告:
“如叶波拉特”
塔里赫:
“18/10/2018,18:33:02”
-LP7EBqo6pabsweqH-4G
广告:
“如叶波拉特”
塔里赫:
“18/10/2018,20:32:56”
-LPBblB72HizL1LaJDIp
广告:
“如叶波拉特”
塔里赫:
“19/10/2018,16:58:45”
-LPCNo2DoDkArJJUQMCp
广告:
“如叶波拉特”
塔里赫:
“19/10/2018,20:33:01”
-LPF-MEziEXaoaNezNHQ
广告:
“如叶波拉特”
塔里赫:
“20/10/2018,8:45:03”
-LPGfoeIVNGq1MRmoEBY
广告:
“如叶波拉特”
塔里赫:
“20/10/2018,16:34:34”
-LPGfpCRniADm6sgGWyy
广告:
“如叶波拉特”
塔里赫:
“20/10/2018,16:34:34”
-LPK8Puua1kLv5eV7NOF
广告:
“如叶波拉特”
塔里赫:
“21/10/2018,8:42:44”
-LPLqoKyV_YiaMqKozxb
广告:
“如叶波拉特”
塔里赫:
“21/10/2018,16:40:42”
-LPLqosW54-5q8hUfNoK
广告:
“如叶波拉特”
塔里赫:
“21/10/2018,16:40:43”

示例,在 Firebase 中 Date: 20/10 / 2018,8: 32Date: 20/10 / 2018,16: 39下面还有一个孩子

我也想按这个顺序来。 根据数据库中的时间,即按照列表的顺序与firebase中一样。但是首先,即将到来

Date: 20/10 / 2018,16: 39
Date: 20/10 / 2018,8: 32 

但我想如上所列 第一
Date: 20/10 / 2018,8: 32 Date: 20/10 / 2018,16: 39 另一张图片链接:https://i.hizliresim.com/j691AL.jpg application

数据库中有很多数据,所以无法修复。

DatabaseReference dbGelenler = db.getReference(kimlik+"/"+cekilensifre+"/"+cekilenisim);

Query query = dbGelenler.orderByChild("tarih").startAt(birincitarih).endAt(birincitarih + "\uf8ff");
        query.addListenerForSingleValueEvent(new ValueEventListener() {
    public void onDataChange(DataSnapshot dataSnapshot) {

        List<String> isimler = new ArrayList<String>();
        for (DataSnapshot anahtar : dataSnapshot.getChildren()) {
            String isim = anahtar.getValue(ornekogrencigetir.class).getAdSoyad();
            String tarih = anahtar.getValue(ornekogrencigetir.class).getTarih();
            HashMap<String, String> user = new HashMap<>();

            if (isimler.indexOf(isim) == -1) {
                user.put("hashdurum", "Giriş");
                String[] seperated;
                seperated = tarih.split(",");
                user.put("hashtarih", seperated[0]);
                user.put("hashsaat", seperated[1]);
            } else {
                user.put("hashdurum", "Çıkış");
                String[] seperated1;
                seperated1 = tarih.split(",");
                user.put("hashtarih", seperated1[0]);
                user.put("hashsaat", seperated1[1]);
            }
            isimler.add(isim);
            veriler.add(user);

为什么查询不采用顺序方式?我该如何解决这个问题?

编辑:错误已解决:

查询信息按时间排序。 在我的数据库中有些时候前面不包含 0。 这些是 12 点之后直到早上 10 点的时间。 例如,上午 9 点。 因此,在比较firebase时钟时,请参考下一个。 情况示例 9:12:15到15:24:54他这里比较的情况是91和15,所以他先拿15:24:54再拿9:12:15。

【问题讨论】:

  • 您在 hizliresim 上的链接无效。 403 禁止。
  • 如何添加带链接的图片
  • 最好在您的问题中包含没有链接的图像;这样一来,它将始终可用。
  • 另外,不要截图你的代码!将其粘贴到问题中,它会更容易帮助您(并为您找到回答的人)
  • 如果您有问题,只需将其粘贴到问题中,我会正确格式化。

标签: android firebase firebase-realtime-database


【解决方案1】:

您将日期/时间存储在数据库中的字符串值中,格式为dd/MM/yyyy hh:mm:ss。 Firebase 中的字符串是按字典顺序排列的,不幸的是,在您使用的日期格式中,值的字典顺序和时间顺序是不同的。

解决方案是将日期/时间值存储为允许以您想要的方式对其进行排序的格式。两种最常见的方法是将它们存储为时间戳(一个数值,即自特定日期以来的毫秒数)或可排序的字符串格式(通常为 2018-10-20T16:34:34)。

有关更多信息,请参阅:

【讨论】:

  • 我只是想通了。在检查了很多数据后,我想到了。感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
  • 2020-02-21
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多