当前有一个ListString里面每个String存储了开始时间-结束时间检测随意输入一个时间格式为hhmm的时间区间与刚刚集合中的是否重复用java语言
可以使用Java中的SimpleDateFormat类来解析时间字符串,并将其转换为Date类型,然后比较时间区间是否重叠。
具体代码如下:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class TimeOverlapChecker {
public static boolean checkOverlap(List<String> timeList, String inputTime) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
Date inputStartTime = sdf.parse(inputTime);
Date inputEndTime = new Date(inputStartTime.getTime() + 60 * 60 * 1000); // 结束时间为开始时间加1小时
for (String time : timeList) {
String[] parts = time.split("-");
Date startTime = sdf.parse(parts[0]);
Date endTime = sdf.parse(parts[1]);
if (inputStartTime.before(endTime) && inputEndTime.after(startTime)) {
return true; // 时间区间重叠
}
}
return false; // 时间区间不重叠
}
public static void main(String[] args) throws Exception {
List<String> timeList = List.of("09:00-12:00", "14:00-18:00", "20:00-22:00");
String inputTime = "13:00";
if (checkOverlap(timeList, inputTime)) {
System.out.println("输入时间区间与已有时间区间重叠");
} else {
System.out.println("输入时间区间与已有时间区间不重叠");
}
}
}
在上面的代码中,我们定义了一个checkOverlap方法来检测输入时间区间是否与已有时间区间重叠。该方法接收一个List
首先,我们使用SimpleDateFormat类将输入时间字符串解析为Date类型,并计算出输入时间区间的起始时间和结束时间。
然后,我们遍历时间区间列表,将每个时间区间字符串解析为起始时间和结束时间,并判断输入时间区间是否与当前时间区间重叠。如果重叠,则返回true,否则继续遍历。
最后,如果遍历完所有时间区间都没有重叠,则返回false。
在main方法中,我们定义了一个时间区间列表和一个输入时间,然后调用checkOverlap方法来检测是否重叠,并输出结果
原文地址: https://www.cveoy.top/t/topic/huOB 著作权归作者所有。请勿转载和采集!