Hallo,
ich wollte aus einem Textinhalt das jüngste Datum finden und dieses zurückgeben.
Erst wollte ich ein Array benutzen, dann eine Liste weil diese Dynamischer ist und zu guter letzt habe ich mir gedacht, warum mit der Liste arbeiten. Wenn die Datums bereits geprüft werden, dann kann man direkt das jüngere Datum speichern.
Ich würde gerne wissen, ob die Lösung so, elegant gelöst wurde?
Vielen Dank
Mi
ich wollte aus einem Textinhalt das jüngste Datum finden und dieses zurückgeben.
Erst wollte ich ein Array benutzen, dann eine Liste weil diese Dynamischer ist und zu guter letzt habe ich mir gedacht, warum mit der Liste arbeiten. Wenn die Datums bereits geprüft werden, dann kann man direkt das jüngere Datum speichern.
Ich würde gerne wissen, ob die Lösung so, elegant gelöst wurde?
Java:
// Testscript zu RegEx
// Entnehmen eines oder mehreren Datums aus dem textInhalt
// Das Juengstes Datum wird zurückgegeben
package regex;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import regex.Datum;
public class DatumFinden {
public static String JuengstesDatumFinden(String textInhalt) throws ParseException {
String datumAlt = "";
String datumNeu = "";
Pattern datumsMuster = Pattern.compile("(\\d{2}).(\\d{2}).(\\d{4})");
Matcher datumsSuche = datumsMuster.matcher(textInhalt);
while (datumsSuche.find()) {
String datumGefunden = datumsSuche.group(0); // Datum dd.MM.YYYY
// System.out.println("Das gefundene Datum wurde geprüft " + Datum.pruefeDatum(datumGefunden));
String datumTag = datumsSuche.group(1); // Datum Tag
String datumMonat = datumsSuche.group(2); // Datum Monat
String datumJahr = datumsSuche.group(3); // Datum Jahr
datumNeu = datumsSuche.group(3) + "-" + datumsSuche.group(2) + "-" + datumsSuche.group(1);
System.out.println("Das neue Datum wurde zum vergleichen umgewandelt: " + datumNeu);
// Variablenzuweisung für den ersten Datumsvergleich
if (datumAlt == "") {
datumAlt = datumNeu;
}
if (datumNeu =="") {
datumNeu = datumNeu;
}
// Datumsformate zum vergleichen
SimpleDateFormat datumsFormat = new SimpleDateFormat("yyyy-MM-dd");
Date datumA = datumsFormat.parse(datumAlt);
Date datumN = datumsFormat.parse(datumNeu);
// Pruefen der beiden Datums, datumAlt, datumNeu
int pruefung = datumA.compareTo(datumN);
if (pruefung == 0) {
System.out.println("Das alte Datum " + datumAlt + " ist gleich zum neuen Datum " + datumNeu);
// das neue Datum muss nicht überschrieben werden, da beide identisch sind
} else if (pruefung > 0) {
System.out.println("Das alte Datum " + datumAlt + " ist groesser als das neue Datum " + datumNeu);
// Das alte Datum ist grösser als das neue Datum und damit ist das alte Datum jünger.
datumNeu = datumAlt;
} else if (pruefung < 0) {
System.out.println("Das alte Datum " + datumAlt + " ist kleiner als das neue Datum " + datumNeu);
// Das alte Datum ist kleiner als das neue Datum und ist damit ist das alte Datum älter.
// Da nach dem jüngeren Datum gesucht wird, wird das alte Datum nicht überschrieben.
} else {
System.out.println("Es konnte kein Datum verglichen werden");
}
} // ende while
return datumNeu;
} // Ende JuengstesDatumFinden
// Hauptprogramm
public static void main(String[] args) throws ParseException {
String textInhalt = "rtetgrtg01.01.2016grregrg02.02.2015piojpj31.01.2016";
System.out.println("Das jüngere Datum ist: " + JuengstesDatumFinden(textInhalt));
} // Ende Hauptprogramm
}
Vielen Dank
Mi