验证多个时间段是否交叉
如下图:
代码如下:
public void checkTime(List<Available> list) { SimpleDateFormat sdf = new SimpleDateFormat(QuickCardConstant.DATE_FMT_HM); if (CollectionUtils.isNotEmpty(list)) { for (int i = 0; i < list.size(); i++) { Date dateBN; try { dateBN = sdf.parse(list.get(i).getBeginTime()); Date dateEN = sdf.parse(list.get(i).getEndTime()); for (int j = i + 1; j < list.size(); j++) { Date dateBN1 = sdf.parse(list.get(j).getBeginTime()); Date dateEN1 = sdf.parse(list.get(j).getEndTime()); if ((dateBN1.compareTo(dateBN) < 0 && dateBN.compareTo(dateEN1) < 0) || (dateBN1.compareTo(dateEN) < 0 && dateEN.compareTo(dateEN1) < 0) || (dateBN.compareTo(dateBN1) < 0 && dateBN1.compareTo(dateEN) < 0) || dateEN1.compareTo(dateBN) == 0 || dateBN1.compareTo(dateEN) == 0 || dateEN1.compareTo(dateEN) == 0 || dateBN1.compareTo(dateBN) == 0) { throw new QuickCardException(ErrorCodeConstant.VALIDATA_AVAILABLE_TIME_CANNOT_CROSS); } } } catch (ParseException e) { logger.error("time handle error"); } } } }
List<Available> list:是传进来的时间参数列表