取值和筛选时间问题
我查出一个数据集合,每条都有时间,如2022-06-14这种
然后我有一个月的时间,2022-05-14到2022-06-14,并且区分成7天一份,多余的也算一份,
data:[[2022-05-14,2022-05-16,2022-05-17,2022-05-18,2022-05-19,2022-05-20,2022-05-21],[2022-05-22,2022-05-23,2022-05-24,2022-05-25,2022-05-26,2022-05-27,2022-05-28]],这种
怎么把查出来的集合数据按照data里的数据分割
回答:
可以把查询出来的create_time进行时间格式化成yyyy-mm-dd格式,然后进行数据分割。
回答:
数据都查出来了,在 Java 里用 Stream 分组就好了吧。如果用 Kotlin,好像分组还要容易一些。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
回答:
我这里用的每周作为分组条件, 你可以看看下面的代码
我的代码上用的是Collectors.toMap, 实际用 Collectors.groupingBy更简洁一点
@Testpublic void doTest2() {
String dates = "2022-05-14,2022-05-16,2022-05-17,2022-05-18,2022-05-19,2022-05-20,2022-05-21,2022-05-22,2022-05-23,2022-05-24,2022-05-25,2022-05-26,2022-05-27,2022-05-28";
final Map<String, List<LocalDate>> resultMap = Arrays.stream(dates.split(","))
.map(LocalDate::parse)
.collect(Collectors.toMap(
ele -> /* 年_月_周 作为索引*/
ele.getYear() + "_" + ele.getMonthValue() + "_" + ele.get(WeekFields.ISO.weekOfWeekBasedYear()),
ele -> {
List<LocalDate> list = new ArrayList<>();
list.add(ele);
return list;
}, (pre, next) -> {
pre.addAll(next);
return pre;
})
);
System.out.println(resultMap);
}
output:{2022_5_19=[2022-05-14], 2022_5_20=[2022-05-16, 2022-05-17, 2022-05-18, 2022-05-19, 2022-05-20, 2022-05-21, 2022-05-22], 2022_5_21=[2022-05-23, 2022-05-24, 2022-05-25, 2022-05-26, 2022-05-27, 2022-05-28]}
回答:
我想你需要自行处理如下一些逻辑:
- 你区分7天的标准是什么,从第1天算起自动区分,还是按照自然周来区分?
- 无论哪种区分,你只需要指定开始统计的起点和截止日期(或者从数据中提取最小最大日期),这样会产生合适的范围日期序列,这样的处理最后利用标准的工具库,而不是简单的字符串处理,这会形成合适的分类区间,我想这样的区间最好还是回归到日期格式好进行比较。
- 在前面2步基础上,可以生成对应的日期段库,就可以用来分类统计啦。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
以上是 取值和筛选时间问题 的全部内容, 来源链接: utcz.com/p/944507.html