话不多说,上代码!
@Test
public void bbTest() {
List<Integer> list = Arrays.asList(201801, 201802, 201805, 201910, 201911,201912,202001,202002,202103);
sort(list);
}
public static String sort(List<Integer> arr) {
Collections.sort(arr);
StringBuilder sb = new StringBuilder();
int i = 0;
while (i < arr.size()) {
int j = i;
int k = i + 1;
while (j < arr.size() - 1 && k < arr.size()
&& Integer.valueOf(dateNexMonth(arr.get(j).toString())).equals(arr.get(k)) ) {
j++;
k++;
}
if (j - i <= 0) {
sb.append(arr.get(i)).append(",");
} else {
sb.append(arr.get(i) + "~" + arr.get(j)).append(",");
}
i = k;
}
String str = sb.substring(0, sb.length() - 1);
System.out.println("str = " + str);
return str;
}
/**
* 指定日期的下个月日期
* @param dat
* @throws ParseException
*/
public static String dateNexMonth(String dat) {
Calendar c = Calendar.getInstance();//获得一个日历的实例
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
Date date = null;
try {
date = sdf.parse(dat);//初始日期
} catch (Exception e) {
}
c.setTime(date);//设置日历时间
c.add(c.MONTH, 1);
return new SimpleDateFormat("yyyyMM", Locale.ENGLISH).format(c.getTime());
}
输出结果:str = 201801201802,201805,201910202002,202103