如何从与我通过的日期相比较的日期列表中获取最近的未来日期? 例如,我有3个类对象的列表,它们的日期属性分别为1月10日,1月20日和1月30日。我有一个日期对象,即1月15日。 现在,当我通过1月15日的日期时,它应该返回1月20日的对象。 如果我通过1月25日,它应该返回1月30日的对象。 这甚至可能吗?
答案 0 :(得分:2)
您搜索日期列表,忽略参考日期之前的任何日期,然后记住最早的日期。
记住最早的日期就像找到最小值的常规循环一样。
示例:
private static Optional<LocalDate> findNext(LocalDate refDate, LocalDate[] dates) {
LocalDate next = null;
for (LocalDate date : dates)
if (! date.isBefore(refDate) && (next == null || date.isBefore(next)))
next = date;
return Optional.ofNullable(next);
}
测试
LocalDate[] dates = { LocalDate.of(2016, 1, 10),
LocalDate.of(2016, 1, 20),
LocalDate.of(2016, 1, 30) };
System.out.println(findNext(LocalDate.of(2016, 1, 5), dates));
System.out.println(findNext(LocalDate.of(2016, 1, 15), dates));
System.out.println(findNext(LocalDate.of(2016, 1, 25), dates));
System.out.println(findNext(LocalDate.of(2016, 2, 1), dates));
输出
Optional[2016-01-10]
Optional[2016-01-20]
Optional[2016-01-30]
Optional.empty
答案 1 :(得分:0)
使用Collections.sort按日期对集合进行排序 并迭代列表,比较作为参数传递的当前日期,并使用Calendar类通过API to identify difference between two dates
识别较小的差异