Vergleich von Datumsangaben

Die Klasse LocalDate stellt die Methode campareTo() bereit, mit der zwei Datumsangaben miteinander verglichen werden können.

Im Beispiel werden zwei Datumsangaben verglichen, die, wie im Deutschen üblich, in der Schreibweise TT.MM.JJJJ formatiert sind. Um diese Strings verarbeiten zu können, müssen sie zunächst in eine Standardform übersetzt und validiert werden, bevor ein Vergleich der Daten stattfinden kann.

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.time.format.ResolverStyle;
import java.util.Locale;

public class CompareDates {

    public static void main(String[] args) {
        final String dateOne = "17.06.2022";
        final String dateTwo = "30.09.2024";
        compareDates(dateOne, dateTwo);
    }

    public static void compareDates(String dateOne, String dateTwo) {
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd.MM.uuuu", Locale.GERMANY)
                .withResolverStyle(ResolverStyle.STRICT);
        LocalDate firstDate = null;
        LocalDate secondDate = null;
        try {
            firstDate = LocalDate.parse(dateOne, dateFormatter);
            secondDate = LocalDate.parse(dateTwo, dateFormatter);
        } catch (DateTimeParseException e) {
            System.err.println("Falsche Datumsangabe");
            return;
        }
        int comp = firstDate.compareTo(secondDate);
        System.out.println(
                comp <= 0 ? dateOne + " liegt vor oder ist gleich " + dateTwo : dateOne + " Liegt nach " + dateTwo);
    }
}

In der Methode compareDates() wird zunächst ein DateTimeFormatter-Objekt erzeugt. Es wird benötigt, um im nächsten Schritt die beiden als Parameter übergebenen Datum-Strings in die Java-Standardform JJJJ-MM-TT zu übersetzen. Dies geschieht durch die Methode LocalDate.parse(), der jeweils ein Datum-String und das Formatter-Objekt übergeben werden. Sie liefert für jedes Datum ein LocalDate-Objekt, die beide nun mittels compareTo() miteinander verglichen werden können.
Die Methode wird auf einem der beiden Objekte aufgerufen und erhält das zweite als Parameter übergeben. Sie liefert einen int-Wert der kleiner 0 ist, wenn das aufrufende Objekt vor dem übergebenen liegt und größer 0 ist, wenn es zeitlich danach liegt. Sind beide Daten gleich, wird 0 zurückgegeben.

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.