根据目标日期查找最近的startDate和endDate的最佳方法

时间:2019-07-18 06:02:16

标签: java

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

1 个答案:

答案 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