如何在特定日期过后的日期列表中获取最近的日期?

时间:2016-12-06 07:19:43

标签: java date

如何从与我通过的日期相比较的日期列表中获取最近的未来日期? 例如,我有3个类对象的列表,它们的日期属性分别为1月10日,1月20日和1月30日。我有一个日期对象,即1月15日。 现在,当我通过1月15日的日期时,它应该返回1月20日的对象。 如果我通过1月25日,它应该返回1月30日的对象。 这甚至可能吗?

2 个答案:

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

识别较小的差异