【发布时间】:2020-03-27 04:56:52
【问题描述】:
我正在做一个预订场地的项目。目的是如果场地在此期间已经预订,则不允许预订
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中方法之间的所有概率?
【问题讨论】:
-
我建议你不要使用
SimpleDateFormat和Date。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的LocalTime。 -
您能否调整这个问题的答案来回答您的问题? Determine Whether Two Date Ranges Overlap
-
不要将开始和结束时间作为字符串保留在您的预订对象中。将它们保留为
LocalTime对象。
标签: java spring time datetime-comparison