在数组列表中搜索 LocalDateTime 范围
Search arraylist for LocalDateTime range
需要一些代码方面的帮助,以便在用户输入后 return 来自 arrayList 的一系列日期。
ArrayList mainList
static ArrayList<LEntry> mainList = new ArrayList();
public LEntry(LocalDateTime date, String id)
2018-10-23T12:05:22 A2315
2017-01-13T10:09:30 A2253
2018-05-10T18:55:30 V1225
2018-05-03T17:44:50 R9952
2017-06-15T16:25:31 A2253
我失败的代码:
private static ArrayList<LogEntry> range() {
String sDate, eDate;
LocalDateTime startDate, endDate;
System.out.println("Start date:\n");
sDate = in.nextLine().replace(" ", "T");
System.out.println("End date:\n");
eDate = in.nextLine().replace(" ", "T");
//System.out.println(eDate);
startDate = LocalDateTime.parse(sDate, DateTimeFormatter.ISO_DATE_TIME);
endDate = LocalDateTime.parse(eDate, DateTimeFormatter.ISO_DATE_TIME);
mainList.stream().filter(i -> i.date ?? ((startDate.isBefore(i.date))&&(endDate.isAfter(i.date))).forEach(j -> Ranges.add(0, j));
return Ranges;
}
我正在尝试使用 isBefore 和 isAfter 来获取我的范围,但是因为它们 return true/false 我在将它集成到我的代码中时遇到了一些问题。
我的目标是在给定日期之间获取 LEntries。
感谢您的任何帮助。
已解决,谢谢@user7
mainList.stream()
.filter(i -> startDate.isBefore(i.date) && endDate.isAfter(i.date))
.forEach(j -> Ranges.add(0, j));
你快到了
mainList.stream()
.filter(i -> startDate.isBefore(i.date) && endDate.isAfter(i.date))
.forEach(i -> {
//your code
});
需要一些代码方面的帮助,以便在用户输入后 return 来自 arrayList 的一系列日期。
ArrayList mainList
static ArrayList<LEntry> mainList = new ArrayList();
public LEntry(LocalDateTime date, String id)
2018-10-23T12:05:22 A2315
2017-01-13T10:09:30 A2253
2018-05-10T18:55:30 V1225
2018-05-03T17:44:50 R9952
2017-06-15T16:25:31 A2253
我失败的代码:
private static ArrayList<LogEntry> range() {
String sDate, eDate;
LocalDateTime startDate, endDate;
System.out.println("Start date:\n");
sDate = in.nextLine().replace(" ", "T");
System.out.println("End date:\n");
eDate = in.nextLine().replace(" ", "T");
//System.out.println(eDate);
startDate = LocalDateTime.parse(sDate, DateTimeFormatter.ISO_DATE_TIME);
endDate = LocalDateTime.parse(eDate, DateTimeFormatter.ISO_DATE_TIME);
mainList.stream().filter(i -> i.date ?? ((startDate.isBefore(i.date))&&(endDate.isAfter(i.date))).forEach(j -> Ranges.add(0, j));
return Ranges;
}
我正在尝试使用 isBefore 和 isAfter 来获取我的范围,但是因为它们 return true/false 我在将它集成到我的代码中时遇到了一些问题。
我的目标是在给定日期之间获取 LEntries。
感谢您的任何帮助。
已解决,谢谢@user7
mainList.stream()
.filter(i -> startDate.isBefore(i.date) && endDate.isAfter(i.date))
.forEach(j -> Ranges.add(0, j));
你快到了
mainList.stream()
.filter(i -> startDate.isBefore(i.date) && endDate.isAfter(i.date))
.forEach(i -> {
//your code
});