Vergleich von Datumsangaben
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.