如何在Firebase上使用日期作为键对值进行排序

时间:2018-08-27 17:13:17

标签: java android firebase

我正在尝试做一个待办事项列表,并且每当用户选中一个复选框时,它都会在对应的日期中添加对/错。问题是firebase不能对字符串进行日期排序,因此经过一些研究,我发现我必须使用timeInMillis,但是Firebase不允许除Strings之外的其他键... Database snapshot

这就是我检索日期的方式。

library(tidyverse)
library(scales)
df <- data.frame(var_X = runif(1000,0,1), var_Y = runif(1000,0,200))

p<-ggplot(df, aes(df$var_X,df$var_Y)) + 
  geom_bin2d(aes(fill = stat(count/max(count)))) +
  scale_x_continuous(trans=log_trans(), breaks=c(100,150, 200, 250)) +
  ylim(c(0, 200)) +
  scale_fill_gradientn(colours = jet.colors(7))
p

1 个答案:

答案 0 :(得分:0)

所以我设法做到了,这就是我的做法... 首先,您必须将毫秒数设为整数,为此我创建了此方法:

public String[] getPreviousFiveDays()  {    
Calendar cal = Calendar.getInstance();
        String dates[] = new String[5];
        cal.add(Calendar.DAY_OF_MONTH, 0 );
        dates[0] = cal.getTimeInMillis()+"";
        for (int i = 1; i < 5; i++){
            cal.add(Calendar.DAY_OF_MONTH,-1);
            dates[i] = cal.getTimeInMillis()+"";
        }
        return dates;
    }

然后,因为我想保存和修改日期,所以我在对象上创建了一个HashMap。

   private Map<String, Boolean> mChecks;
public Map<String, Boolean> getChecks() {
    return mChecks;
}

public void setChecks(Map<String, Boolean> checks) {
    mChecks = checks;
}

然后在选中CheckBox时修改日期,我检索了这样的键(由于我只使用了最后五个键,所以我只检索了这些键):

 mChecks = new TreeMap<>(habitos.getChecks());

        List<Map.Entry<String, Boolean>> entryList =
                new ArrayList<>(mChecks.entrySet());
        for (int x=0; x<5; x++) {
            int y = 1 + x;
            Map.Entry<String, Boolean> entry =
                    entryList.get(entryList.size() - y);
            mDays[x] = entry.getKey();

        }