Моего стандартный метод для проверки, если дата между двумя датами в Java выглядит следующим образом:Проверьте дату между диапазоном дат, которые также обработать нулевые значения Java
public static boolean isWithinRange(Date date, Date startDate, Date endDate) {
return !(date.before(startDate) || date.after(endDate));
}
Я хочу, чтобы добавить поддержку для нулевых значений на STARTDATE или endDate (то есть пользователь не ввел дату.Если startDate имеет значение null, я хочу только проверить endDate, и если endDate имеет значение null, я хочу только проверить startDate, и если оба значения null, то это правда. Мое текущее решение выглядит так:
public static boolean isWithinRange(Date date, Date startDate, Date endDate) {
if (startDate == null && endDate == null) {
return true;
}
if (!(startDate != null || !date.after(endDate))) {
return true;
}
if (!(endDate != null || !date.before(startDate))) {
return true;
}
return !(date.before(startDate) || date.after(endDate));
}
альтернативный более читаемый пример:
public static boolean isWithinRange(Date date, Date startDate, Date endDate) {
if (startDate == null && endDate == null) {
return true;
}
if (startDate == null && date.before(endDate))) {
return true;
}
if (endDate == null && date.after(startDate))) {
return true;
}
return date.after(startDate) && date.before(endDate));
}
Но это похоже на действительно плохой код. Есть ли другой способ справиться с этим?
Все 's делают его довольно трудно для меня! читать. Но вы можете подумать, будет ли это лучше подходит для codereview.stackexchange.com. – JETM
Это должно быть включено, а не строго до и после. – uraza
ответ assylias лучше, но вторая версия вашего кода довольно разумная. – VGR