Java根据时间戳集合中时间间隔分片
/**
* 根据时间戳集合分片时间段
* @param arr 升序排序毫秒数组
* @param maxGap 间隔毫秒数
* @return 逗号分割时间段集合
*/
public List<String> timeBlock(long[] arr, int maxGap) {
StringBuilder str = new StringBuilder();
List<String> list = new ArrayList<>();
for (int i = 1; i < arr.length; i++) {
long gap = arr[i] - arr[i - 1];
if (gap <= maxGap) {
str.append(formatDate(new Date(arr[i - 1]), YEAR2SECOND)).append(",");
str.append(formatDate(new Date(arr[i]), YEAR2SECOND));
str.append(",");
} else {
str.append(";").append(formatDate(new Date(arr[i]), YEAR2SECOND)).append(",");
}
}
for (String one : str.toString().split(";")) {
String[] two = one.split(",");
if (two.length >= 2) {
list.add(two[0] + "," + two[two.length - 1]);
}
}
return list;
}
/**
* 得到日期字符串
*/
public static String formatDate(Date date, String format) {
String formatDate = null;
if (format != null && format.length() > 0) {
formatDate = new SimpleDateFormat(format).format(date);
} else {
formatDate = new SimpleDateFormat("yyyy-MM-dd").format(date);
}
return formatDate;
}