I guess avoiding !
simplifies logic for reading
public boolean isBetween(LocalTime start, LocalTime end, LocalTime target) {
return start.isAfter(end) ?
(target.isAfter(start) || target.isBefore(end)) :
(target.isAfter(start) && target.isBefore(end));
}