Поиск данных между двумя датами

85
23 января 2021, 23:10

Есть метод, который ищет данные между двумя датами. Но не включительно. Т.е. данные записанные в эти дни он не учитывает. Как это исправить?

default List<Orders> findByOrdersDate(List<Orders> ordersWorkerList, Date date1, Date date2){
        List<Orders> newOrdersList = new ArrayList<>();
        for (Orders value: ordersWorkerList){
            if (value.getDate().after(date1) && value.getDate().before(date2)){
                newOrdersList.add(value);
            }
        }
        return newOrdersList;
Answer 1
for (Orders value: ordersWorkerList) {
 if (!value.getDate().before(date1) && !value.getDate().after(date2)) {
    newOrdersList.add(value);
  }
}

Если выбирать даты, которые не раньше начальной и не позже конечной, то даты, совпадающие с date1 и date2 тоже будут учитываться

Answer 2
public List<Order> findByOrdersDate(List<Order> ordersWorkerList, Date beg, Date end) {
    Predicate<Order> geBeg = o -> !o.getDate().before(beg);
    Predicate<Order> leEnd = o -> !o.getDate().after(end);
    return ordersWorkerList.stream()
            .filter(geBeg)
            .filter(leEnd)
            .collect(Collectors.toCollection(ArrayList::new));
}
Answer 3

Правильнее ответ Mairenn. Но ещё можно создать свои функции. С композицией и предикатами!™

BiPredicate<Date, Date> equals = Date::equals;
BiPredicate<Date, Date> equalsOrAfter = equals.or(Date::after);
BiPredicate<Date, Date> equalsOrBefore = equals.or(Date::before);
...
Date date = value.getDate();
if (equalsOrAfter.test(date, date1) && equalsOrBefore.test(date, date2)) {
Answer 4
for (Orders value: ordersWorkerList){
    if (value.getDate() >= date1 && value.getDate() <= date2){
        newOrdersList.add(value);
    }
}

Если date1 - это "дата с" date2 - "дата по".

READ ALSO
Понимание MediaCodec и MediaExtractor

Понимание MediaCodec и MediaExtractor

Я хочу выполнить некоторую обработку аудиофайлов без их воспроизведения, только математикаУ меня есть сомнения о том, правильно ли я это...

197
передача переменной name при наследовании

передача переменной name при наследовании

не пойму как присобачить "Полкана" к "большому псу" сохраняя вызов конструктора предкав остальном всё работает как надо

95
Аналог await Task.Delay(1000) в JavaFX

Аналог await Task.Delay(1000) в JavaFX

господаЕсть такое задание: разработать программу, изображающую на экране работающие электронные часы с цифровым индикатором, а также с индикацией...

120
Mozilla декодирует url в адресной строке

Mozilla декодирует url в адресной строке

Mozilla декодирует закодированный url в адресной строкеИз-за чего получаю bad request, т

82