首页 > 解决方案 > 什么代码检查两个时间段是否重叠?

问题描述

我想使用 (PeriodAStart < PeriodBEnd+1 && PeriodAEnd+1 > PeriodBStart) 方法比较 2 个周期对象,以检查重叠和最后一个周期后的 1 天。

LocalDate in = LocalDate.of(inYear, inMonth, inDay);
LocalDate out = LocalDate.of(outYear, outMonth, outDay);

if(checkAvailability(in, out)){
     Reservation newRes = new Reservation(in, out, rooms);
}

//

public static boolean checkAvailability(LocalDate in, LocalDate out) {
    FileManager.openCalendarFile();
    ArrayList<Calendar> caList = new ArrayList<>();
    caList = FileManager.getCalendar();
    boolean overlap = true;

    Period p = Period.between(in, out);

    for(Calendar cal : caList) {
        //TODO
    }
}

标签: java

解决方案


使用 period 是不可能的,但是您可以执行以下操作:

LocalDate in = LocalDate.now().minusDays(100);
LocalDate out = LocalDate.now().plusDays(100);

LocalDate dateToCheck = LocalDate.now();

if (in.isBefore(dateToCheck) && out.isAfter(dateToCheck)) {
    System.out.println("dateToCheck within period of in-out");

}

在此示例中,我将今天作为dateToCheckin作为今天之前的out100 天和今天之后的 100 天。上面的代码将打印dateToCheck within period of in-out,因为dateToCheck在那个“期间”内。


推荐阅读