取值和筛选时间问题

我查出一个数据集合,每条都有时间,如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更简洁一点

@Test

public 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]}


回答:

我想你需要自行处理如下一些逻辑:

  1. 你区分7天的标准是什么,从第1天算起自动区分,还是按照自然周来区分?
  2. 无论哪种区分,你只需要指定开始统计的起点和截止日期(或者从数据中提取最小最大日期),这样会产生合适的范围日期序列,这样的处理最后利用标准的工具库,而不是简单的字符串处理,这会形成合适的分类区间,我想这样的区间最好还是回归到日期格式好进行比较。
  3. 在前面2步基础上,可以生成对应的日期段库,就可以用来分类统计啦。

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

以上是 取值和筛选时间问题 的全部内容, 来源链接: utcz.com/p/944507.html

回到顶部