有多个时间段的定时事件,现在需要新增事件,保证新增事件不与之前事件时间冲突。这个采用了严格匹配,即开始时间是9:00 ,而另一个时间的结束时间也是9:00则判断时间为冲突。如需允许时间重合,需要修改compareTime的规则即可。
public class Test {
public static void main(String [] args){
// boolean compareTime = compareTime("15:30", "13:30");
// System.out.println("==="+compareTime);
//不在区间 5:00 6:00 在前区间 6:00 7:00 在后区间 9:00 10:00 部分交叉 前区间 6:00 7:30 后区间 7:30 9:30
//包含在里面 8:00 8:30
List<String> startTime = new ArrayList<>();
List<String> endTime = new ArrayList<>();
startTime.add("8:00");
endTime.add("8:30");
conflictCompareTime("7:01","8:59",startTime,endTime);
}
public static boolean compareTime(String time1,String time2){
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm", Locale.CHINA);
try {
Date parse1 = dateFormat.parse(time1);
Date parse2 = dateFormat.parse(time2);
return parse1.getTime()>parse2.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}
public static boolean conflictCompareTime(String startTime,String endTime,List<String>startTimeList,List<String>endTimeList){
for (int i = 0; i < startTimeList.size(); i++) {
boolean judge1 = compareTime(startTime, startTimeList.get(i));
boolean judge2 = compareTime(startTime, endTimeList.get(i));
boolean judge3 = compareTime(endTime, startTimeList.get(i));
boolean judge4 = compareTime(endTime, endTimeList.get(i));
if (judge1&&!judge2||judge3&&!judge4||!judge1&&judge4){
System.out.println("时间冲突了"+(judge1&&!judge2)+"===="+(judge3&&!judge4)+"===="+(!judge1&&judge4));
}else {
System.out.println("完美");
}
}
return false;
}
}