我正在做一个预订场地的项目。目的是如果场地在此期间已经预订,则不允许预订
if (!alreadyBookedSet.isEmpty()) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
logger.debug("Check if the venue is already booked on this date" + booking.getBookingDate());
for (Booking alreadyBooked : alreadyBookedSet) {
String bookingDate = alreadyBooked.getBookingDate();
if (bookingDate.equals(booking.getBookingDate())) {
String alreadyBookedTimeStart = alreadyBooked.getTimeStart();
Date alreadyBookedTimeStartDate = simpleDateFormat.parse(alreadyBookedTimeStart);
String alreaydBookedTimeEnd = alreadyBooked.getTimeEnd();
Date alreaydBookedTimeEndDate = simpleDateFormat.parse(alreaydBookedTimeEnd);
String bookingTimeStart = booking.getTimeStart();
Date bookingTimeStartDate = simpleDateFormat.parse(bookingTimeStart);
String bookingTimeEnd = booking.getTimeEnd();
Date bookingTimeEndDate = simpleDateFormat.parse(bookingTimeEnd);
if (!bookingTimeStartDate.before(alreadyBookedTimeStartDate) && !bookingTimeEndDate.after(alreaydBookedTimeEndDate)) {
return true;
}
}
}
}
当场地已经在下午 2:00 至下午 3:00 预订时,我遇到了问题,我们想在下午 1:00 至下午 3:00 预订。这将返回场地尚未预订。
有没有办法解决 java 中方法之间的所有概率?
您需要检查是否存在重叠,因此逻辑应该是
if(!bookingTimeStartDate.before(alreadyBookedTimeStartDate) &&
!bookingTimeStartDate.after(alreaydBookedTimeEndDate) ||
!bookingTimeEndDate.before(alreaydBookedTimeStartDate) &&
!bookingTimeEndDate.after(alreaydBookedTimeEndDate))
这是正确的逻辑,因为如果任何一个时间不在开始之前和结束之后,它们必须介于两者之间,因此是重叠的。