我应该使用哪个运算符来比较两个 LocalDate 值?

Mic*_*nrs 0 java localdate

我给出了一个 LocalDate 值,然后我想给出另一个值,但我想确保新的值与之前的值不同。我写了一些代码,但似乎不起作用。

Flight flight = new Flight();
System.out.println("Give the day of the departure.");
LocalDate day = LocalDate.of(2019, Month.MAY, scanner.nextInt());
flight.setDateOfDeparture(day);
boolean theDay = true; //Flag (reversed way in order to achieve the TRUE logic value).

for (Flight flight1 : flightList) {
    if (flight1.getDateOfDeparture() == (flight.getDateOfDeparture())) {
           theDay = false;
     }
}

if (theDay) {
    // Some logic...
}
Run Code Online (Sandbox Code Playgroud)

我也尝试了关键字 equals 。但 for 循环再次忽略比较。

for (Flight flight1 : flightList) {
   if (flight1.getDateOfDeparture().equals(flight.getDateOfDeparture())) {
        theDay = false;
   }
}
Run Code Online (Sandbox Code Playgroud)

在您的回答之后,我尝试了您提出的许多解决方案。为了检查编译器是否进入 for 循环,我输入了变量的打印消息,该消息在我的控制台中从未见过。

for (Flight flight1 : flightList) {
   System.out.println(flight1.getDateOfDeparture());
   if(flight1.getDateOfDeparture().compareTo(flight.getDateOfDeparture())==0) {
      theDay = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以根据自己的需要使用以下方法

    LocalDate oldDate = LocalDate.of(2019,3,31);
    LocalDate newDate = LocalDate.of(2019,4, 1);
    System.out.println(oldDate.isAfter(newDate));
    System.out.println(oldDate.isBefore(newDate));
    System.out.println(oldDate.isEqual(newDate));
    System.out.println(oldDate.compareTo(newDate));
Run Code Online (Sandbox Code Playgroud)

这将返回

false
true
false
-2
Run Code Online (Sandbox Code Playgroud)