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);
}