如果我有一个房间列表和一个名为 room1 的特定房间,该房间是在 2018 年 12 月 12 日至 2018 年 12 月 20 日期间预订的。
另一位用户想要在 2018 年 12 月 15 日至 2018 年 12 月 25 日期间预订该房间。我尝试使用 date.after(checkInDate)
和 date.after(checkOutDate)
但它不起作用。如何解决?
Date tempStart = checkinDate;
Date tempEnd = checkoutDate;
LinkedList<Integer> roomNbrs = new LinkedList<>();
for (Booking b: books) {
if (tempStart.equals(b.getCheckinDate()) && tempEnd.equals(b.getCheckoutDate()) && !roomNbrs.contains(roomNbr) ||
(tempStart.after(b.getCheckinDate())) && ((tempEnd.before(b.getCheckoutDate()) || tempEnd.equals(b.getCheckoutDate()))
&& !roomNbrs.contains(roomNbr)) ||
((tempStart.before(b.getCheckinDate()) || tempStart.equals(b.getCheckinDate()))
&& tempEnd.before(b.getCheckoutDate()) && !roomNbrs.contains(roomNbr))){
roomNbrs.add(b.getRoomNbr());
}
}
最佳答案
我设法解决了这个问题,解决方案如下:
private void viewAvailableRoomDate(Date tempStart, Date tempEnd) {
LinkedList<Integer> roomNbrs = new LinkedList<>();
for (Booking b : books) {
if ((!(tempStart.after(b.getCheckinDate()) && tempEnd.after(b.getCheckinDate())) ||
(tempStart.before(b.getCheckoutDate()) && tempEnd.after(b.getCheckoutDate())) ||
(tempStart.before(b.getCheckinDate()) && tempEnd.after(b.getCheckoutDate()))) ||
(tempStart.after(b.getCheckinDate()) && tempEnd.before(b.getCheckoutDate()))){
roomNbrs.add(b.getRoomNbr());
}
}
}
关于java - Date.after 和 Data.after 位于同一 if 语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53643483/