直接上代码吧!
public static Map<String, Object> isOverlap(Date startDay1, Date endDay1, Date startDay2, Date endDay2){ HashMap<String, Object> resultMap = new HashMap<>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date maxStartDate = startDay1; if(maxStartDate.before(startDay2)) { maxStartDate = startDay2; } Date minEndDate = endDay1; if(endDay2.before(minEndDate)) { minEndDate = endDay2; } if(maxStartDate.before(minEndDate) || (maxStartDate.getTime() == minEndDate.getTime())) { //有交集 resultMap.put("isOverlap",true); resultMap.put("start", sdf.format(maxStartDate)); resultMap.put("end", sdf.format(minEndDate)); return resultMap; } else { resultMap.put("isOverlap",false); return resultMap; } }
调用方法,resultMap可获取到是否有交集的结果,以及交集。