public boolean insertValidate(Long beginDate, Long endDate, List<TimeVo> occupyTime) {
Long begin = beginDate;
Long end = endDate;
List<Long> beginList = new ArrayList<>();
List<Long> endList = new ArrayList<>();
for (int i = 0; i < occupyTime.size(); i++) {
beginList.add(occupyTime.get(i).getStartTime().getTime());
endList.add(occupyTime.get(i).getEndTime().getTime());//一个开始时间对应一个结束时间
}
for (int i = 0; i < endList.size(); i++) {
//时间有重叠有三种情况:
//1.插入时间的开始时间小于已经存在的一段时间的开始时间,但结束时间位于开始时间和结束时间之间(重叠)
//2.插入时间的开始时间小于已经存在的一段时间的开始时间,但结束时间大于结束时间(全包含)
//3.插入时间的开始时间大于一段已经存在的时间的开始时间,但是却小于这段时间的结束时间,且结束时间大于这段时间的结束时间
//画一个时间图,可以总结出:他们都是开始时间小于已经存在的一段时间的结束时间,但结束时间大于这段时间的开始时间
if (begin < endList.get(i) && end > beginList.get(i)) {
return false; //存在重叠
}
}
return true;
}
java判断开始和结束时间段对比改段时间是否已占用
最新推荐文章于 2024-04-01 11:32:45 发布