java - 查找3个日期中最早的日期

标签 java date

我在 Java 中有三个日期:a、b、c。任何或所有这些日期都可以为空。在没有大量 if-else block 的情况下,确定 a、b、c 中最早日期的最有效方法是什么?

最佳答案

无法绕过 null 检查,但通过一些重构,您可以让它变得轻松。

创建一个安全比较两个日期的方法:

/**
 * Safely compare two dates, null being considered "greater" than a Date
 * @return the earliest of the two
 */
public static Date least(Date a, Date b) {
    return a == null ? b : (b == null ? a : (a.before(b) ? a : b));
}

然后组合调用:

Date earliest = least(least(a, b), c);

实际上,您可以使它成为任何Comparable 的通用方法:

public static <T extends Comparable<T>> T least(T a, T b) {
    return a == null ? b : (b == null ? a : (a.compareTo(b) < 0 ? a : b));
}

关于java - 查找3个日期中最早的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15820951/

相关文章:

java - 以 Wicket 形式显示搜索结果数量

java - 为什么 java.lang.Cloneable 没有覆盖 java.lang.Object 中的 clone() 方法?

java - 在 Spring MVC Controller 层中,@Scope ("prototype") 与 @Scope ("singleton")

java - 如何在 JTextField 中隐藏插入符号?

java - 需要帮助在线程运行方法中返回对象

python - 由开始和结束时间戳定义的分割持续时间

php - 与 PHP 中的日期进行比较

javascript - 焦点是否触发 keyup 事件?

php - 如何查找两个日期之间的星期一或星期二的数量?

angular - 如何在angular bootstrap的ngbDatepicker输入字段中更改日期格式?