我想使用(PeriodAStart
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
}
}
答案 0 :(得分:0)
不可能使用句点,但是您可以执行以下操作:
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
设为今天之前的100天,并将out
设为今天之后的100天。上面的代码将打印dateToCheck within period of in-out
,因为dateToCheck
在该“期间”内。
答案 1 :(得分:0)
您似乎正在检查Calendar
个对象是否落入Period
中。
Calendar
是错误的API。如果可能的话,建议您将FileManager.getCalendar()
更改为返回LocalDate
。
此外,Period
代表“ 5个月”和“ 7年”之类的内容。它没有起点和终点。
您应该先将Calendar
转换为LocalDate
:
// write this in the for loop
LocalDate date = LocalDateTime.ofInstant(cal.toInstant(), cal.getTimeZone().toZoneId()).toLocalDate();
然后调用isAfter
和isBefore
:
if (out.isAfterDate(date) && in.isBefore(date)) {
// the date falls between in and out.
}