Как отфильтровать объект по localDateTime в весенней загрузки Java? - PullRequest
0 голосов
/ 17 января 2019

У меня есть объект, это его описание?

public MemberSkills(User user, BasicSkills skills, Short level, Short status, LocalDateTime confirmDate, String comment) {
    this.user = user;
    this.skills = skills;
    this.level = level;
    this.status = status;
    this.confirmDate = confirmDate;
    this.comment = comment;
}

Я хочу отфильтровать MemberSkill от «Подтверждение» до «Подтверждение». Я использую Java-8 и Java-Springboot. Я пытался, но это не сработало.

LocalDateTime fromdate = LocalDateTime.parse(memberSkillRequest.getFromDate(), formatter);
LocalDateTime toDate = LocalDateTime.parse(memberSkillRequest.getToDate(), formatter);

List<MemberSkills> filterMemberSkill = memberSkills.stream().filter(memberSkill -> memberSkill.getConfirmDate().isBefore(fromdate)).collect(Collectors.toList());
List<MemberSkills> listMemberSkill = filterMemberSkill.stream().filter(memberSkill -> memberSkill.getConfirmDate().isAfter(toDate)).collect(Collectors.toList());

fromdate и todate получить от клиента отправить.

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Полагаю, вы намеревались это:

    List<MemberSkills> listMemberSkill = memberSkills.stream()
            .filter(memberSkill -> ! memberSkill.getConfirmDate().isBefore(fromdate))
            .filter(memberSkill -> memberSkill.getConfirmDate().isBefore(toDate))
            .collect(Collectors.toList());

Это дает вам MemberSkills объекты с датами подтверждения в полуоткрытом интервале между датой и датой. То есть даты должны быть до или после от даты и строго до до даты. Это распространенный способ определения временных интервалов. В коде я использую «не до» для обозначения «вкл или после».

0 голосов
/ 17 января 2019

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

List<MemberSkills> filterMemberSkill = memberSkills.stream()
                 .filter(memberSkill -> memberSkill.getConfirmDate().isBefore(toDate) 
                                   && memberSkill.getConfirmDate().isAfter(fromDate))
                 .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...