java怎么把一组不连续且跨天的时间按照天重新分组组合呀,求个工具方法

java怎么把一组不连续且跨天的时间按照天重新分组组合呀,求个工具方法
栗子:输入List<开始时间,结束时间>
// 2021-03-20 02:00:00 - 2021-03-21 02:00:00
// 2021-03-22 00:00:00 - 2021-03-24 02:00:00
// 2021-03-24 22:00:00 - 2021-03-25 02:00:00

输出:
<年月日,List<开始时间,结束时间>>
<20210320,[{2021-03-20 02:00:00,2021-03-20 23:59:59}]>
<20210321,[{2021-03-21 00:00:00,2021-03-21 02:00:00}]>
<20210322,[{2021-03-22 00:00:00,2021-03-22 23:59:59}]>
<20210323,[{2021-03-23 00:00:00,2021-03-23 23:59:59}]>
<20210324,[{2021-03-24 00:00:00,2021-03-24 02:00:00},{2021-03-24 22:00:00,2021-03-24 23:59:59}]>
<202103235,[{2021-03-25 00:00:00,2021-03-25 02:00:00}]>

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
 public static class D{
    private String timeNum;
    private String timeStr;

    public D(String timeNum, String timeStr) {
      this.timeNum = timeNum;
      this.timeStr = timeStr;
    }


    public String getTimeNum() {
      return timeNum;
    }

    public void setTimeNum(String timeNum) {
      this.timeNum = timeNum;
    }

    @Override
    public String toString() {
      return "D{" +
              "timeNum='" + timeNum + '\'' +
              ", timeStr='" + timeStr + '\'' +
              '}';
    }
  }

  public static void testDate() {
    List<String> list = new ArrayList<>();
    list.add("2021-03-20 02:00:00");
    list.add("2021-03-20 12:00:00");
    list.add("2021-03-21 02:00:00");
    List<D> ds = new ArrayList<>();
    for (String s : list) {
      String num = s.replaceAll("-", "");
      num = num.substring(0, 8);
      D d = new D(num, s);
      ds.add(d);
    }
    Map<String, List<D>> collect = ds.stream().collect(Collectors.groupingBy(D::getTimeNum));
    System.out.println(collect);
  }