java - 什么代码检查两个时间段是否重叠?
问题描述
我想使用 (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
}
}
解决方案
使用 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");
}
在此示例中,我将今天作为dateToCheck
,in
作为今天之前的out
100 天和今天之后的 100 天。上面的代码将打印dateToCheck within period of in-out
,因为dateToCheck
在那个“期间”内。
推荐阅读
- gcc - 如何使用交叉编译器为 ARM 构建静态库 .a?
- android - 将实时数据从 Android 发送到服务器
- oracle - Oracle pl/sql:在事务中执行动态删除
- android - 聊天应用程序(例如 Messenger)如何收听传入的消息,即使它们的活动尚未开始
- javascript - 使用下划线或 lodash 将一种 JSON 结构转换为另一种
- sql - 将值表作为查询的参数
- android - Google 登录无法在真实设备中使用
- unity3d - Unity 中 Rigibody2D.constraints 的错误
- linux - Jenkins:将文件传输到 linux 服务器(从文件中过滤 windows 字符)
- jsf - p:toolbar 不显示,虽然其他元素工作正常