java代码校验时间段没有重复

267 阅读1分钟

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List;

class TimeRange { private Date startTime; private Date endTime;

public TimeRange(Date startTime, Date endTime) {
    this.startTime = startTime;
    this.endTime = endTime;
}

public Date getStartTime() {
    return startTime;
}

public Date getEndTime() {
    return endTime;
}

}

public class TimeRangeValidator { public static boolean validateTimeRanges(List timeRanges) { for (int i = 0; i < timeRanges.size(); i++) { TimeRange currentRange = timeRanges.get(i); for (int j = i + 1; j < timeRanges.size(); j++) { TimeRange otherRange = timeRanges.get(j); if (isOverlapping(currentRange, otherRange)) { return false; } } } return true; }

private static boolean isOverlapping(TimeRange range1, TimeRange range2) {
    return range1.getStartTime().before(range2.getEndTime()) &&
            range2.getStartTime().before(range1.getEndTime());
}

public static void main(String[] args) throws ParseException {
    // 示例用法
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    List<TimeRange> timeRanges = new ArrayList<>();
    timeRanges.add(new TimeRange(sdf.parse("2023-06-30 09:00:00"), sdf.parse("2023-06-30 12:00:00")));
    timeRanges.add(new TimeRange(sdf.parse("2023-06-30 11:00:00"), sdf.parse("2023-06-30 14:00:00")));
    timeRanges.add(new TimeRange(sdf.parse("2023-06-30 15:00:00"), sdf.parse("2023-06-30 17:00:00")));

    boolean isValid = validateTimeRanges(timeRanges);
    System.out.println("时间段校验结果: " + isValid);
}

}