StartDate EndDate
2008-03-10 2008-03-11
2008-03-10 2008-03-13
2008-03-11 2008-03-12
2008-03-15 2008-03-19
我想根据目标日期从日期列表中找到最接近的一个。 2008-03-12
输出应为 StartDate = 2008-03-11和EndDate = 2008-03-12
答案 0 :(得分:0)
假设它为LocalDate
,请使用自然升序对列表进行排序
List<LocalDate> d = Stream
.of(LocalDate.parse("2008-03-10"), LocalDate.parse("2008-03-11"), LocalDate.parse("2008-03-12"),
LocalDate.parse("2008-03-13"), LocalDate.parse("2008-03-14"), LocalDate.parse("2008-03-19"),
LocalDate.parse("2008-03-15"), LocalDate.parse("2008-03-20"))
.sorted().collect(Collectors.toList());
现在找到2008-03-12
的索引
int index = d.indexOf(LocalDate.parse("2008-03-12"));
然后获取最近的上一个日期
System.out.println("Previous nearest date : "+d.get(index-1)); //2008-03-11