1. ホーム
  2. date

LocalDateインスタンスを比較する方法 Java 8

2023-09-09 20:58:40

質問

私は日付にかなり正確である必要があるアプリを書いています。私はどのようにLocalDateインスタンスを比較することができるのでしょうか。

LocalDate localdate1 = LocalDate().now();
LocalDate localdate2 = someService.getSomeDate();
localdate1.equals(localdate2);

しかし、私のアプリは紛らわしい結果を出していることに気づきました。それは、日付の比較のせいだと思います。

1970'の時刻をlongで取得し、その2つを比較することを考えていますが、もっと簡単でなければなりません、私はそれを確信しています。

どのように解決するのですか?

使用方法 equals() LocalDate はequalsをオーバーライドします。

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;
}

の結果に満足できない場合は equals() の定義済みメソッドを使うのがよいでしょう。 LocalDate .

これらのメソッドはすべて compareTo0() メソッドをチェックし、単に cmp の値をチェックするだけです。それでもおかしな結果になる場合は(なるはずはないのですが)、入力と出力の例を添付してください。