如何比较LocalDate实例Java 8

aza*_*lut 63 compare date java-8

我正在编写一个需要在日期中非常准确的应用程序,我想知道如何比较LocalDate实例..现在我使用的是:

LocalDate localdate1 = LocalDate().now();
LocalDate localdate2 = someService.getSomeDate();
localdate1.equals(localdate2);
Run Code Online (Sandbox Code Playgroud)

但我注意到我的应用程序给了我一些令人困惑的结果,我认为这是因为比较日期.

我正在考虑从1970年代开始获得时间并比较这两者,但我必须更容易,我很确定

roy*_*oyB 92

使用确定覆盖等于:equals() LocalDate

int compareTo0(LocalDate otherDate) {
    int cmp = (year - otherDate.year);
    if (cmp == 0) {
        cmp = (month - otherDate.month);
        if (cmp == 0) {
            cmp = (day - otherDate.day);
        }
    }
    return cmp;
}
Run Code Online (Sandbox Code Playgroud)

如果您对结果不满意equals(),那么您可以使用预定义的方法LocalDate.

请注意,所有这些方法都使用该compareTo0()方法,只需检查该cmp值.如果你仍然得到奇怪的结果(你不应该),请附上一个输入和输出的例子

  • `equals` 和 `isEquals` 都使用 `return compareTo0((LocalDate) obj) == 0;` 所以是的。不同之处在于首先检查 `instanceOf` 而 `isEqual` 是强类型为 `ChronoLocalDate` (3认同)

小智 5

LocalDate ld ....;
LocalDateTime ldtime ...;

ld.isEqual(LocalDate.from(ldtime));
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到堆栈溢出!尽管这可以回答问题,但没有对您的代码进行解释。请更新您的答案以解释您正在做什么。谢谢! (4认同)