【问题标题】:Firebase endAt() not working with date string?Firebase endAt() 不能使用日期字符串?
【发布时间】:2017-03-05 08:27:42
【问题描述】:

这里是一个非常基本的问题

我的存储日期字符串在 Firebase DB 中是这样的

23-Oct-2016 07:00:11 AM

现在我正在触发这个查询,我正在获取从那个日期开始的所有数据

   Query query = mDatabase.orderByChild("time").startAt("23-Oct-2016")

现在我还想按当前 AM/PM 时间过滤我正在尝试这样的查询,但它对结果没有影响。

如果当前时间是 PM,基本上它不应该返回任何对象,我不知道为什么它不起作用。

   Query query = mDatabase.orderByChild("time").startAt("23-Oct-2016").endAt("PM");

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    像您似乎正在做的那样将日期和时间存储为可读字符串肯定会给您带来困难。字符串是按字典顺序排列的,而您通常希望将日期视为按时间顺序排列的。这两个订单并不总是匹配的。

    存储用于查询的日期/时间的最佳方式是简单的timestamp:自 UNIX 纪元以来的毫秒数。

    如果您坚持将日期和时间存储为更易读的字符串,则最好将它们存储为既可读又按字典顺序和时间顺序排序相同的格式,例如 ISO 8601 格式:@987654322 @。这是我输入的当前时间:UTC 时间 2016 年 10 月 23 日下午 3:04。

    【讨论】:

    • 我做错的是我认为 startAt() 和 endAt() 就像字符串前缀和字符串结束比较的东西。我是firebase的新手,我现在明白它的范围了。所以基本上只通过 PM 不会给我任何东西,因为它不是适当的范围。我需要每 12 小时过滤一次数据。我希望你明白我的意思。
    • 我上面描述的结构允许您根据许多日期/时间范围过滤数据。
    猜你喜欢
    • 1970-01-01
    • 2015-06-28
    • 2020-05-19
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2014-04-30
    • 2018-10-28
    相关资源
    最近更新 更多