Wie überprüfe ich die Gültigkeit der Datumszeichenfolge?
In meinem Projekt muss ich überprüfen, ob eine Datumszeichenfolge ein geeignetes Datumsobjekt ergibt. Ich habe beschlossen, JJJJ-MM-TT und Datumsformate [(Jahr, Monat, Datum) und (Jahr, Monat, Datum, Std., Min.)] Zuzulassen. Wie kann ich überprüfen, ob sie gültig sind? Mein Code gibt null für "1980-01-01" und einige seltsame Daten (wie 3837.05.01) zurück, die eine durch Kommas getrennte Zeichenfolge angeben:
private Date parseDate(String date){
Date data = null;
// yyy-mm-dd
try {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
df.setLenient(false);
df.parse(date);
return data;
}
catch (Exception e) {
try{
int[] datArr = parseStringForDate(date);
int len = datArr.length;
// year, month, day
if(len == 3){
return new Date(datArr[0], datArr[1], datArr[2]);
}
// year, montd, day, hours, mins
else if(len ==5){
return new Date(datArr[0], datArr[1], datArr[2], datArr[3], datArr[4]);
}
// year, month, day, hours, mins, secs
else if(len == 6){
return new Date(datArr[0], datArr[1], datArr[2], datArr[3], datArr[4], datArr[5]);
}
else {
return data;
}
}
catch (Exception f){
return data;
}
}
}
private int[] parseStringForDate(String s){
String[] sArr = s.split(",");
int[] dateArr = new int[sArr.length];
for(int i=0; i< dateArr.length; i++){
dateArr[i] = Integer.parseInt(sArr[i]);
}
return dateArr;
}
Ich erinnere mich, dass ich 1900 vom Datum des Jahres subtrahieren musste, aber ich sehe auch, dass der Monat anders ist, usw., und ich möchte vermeiden, jedes Element meines Ints-Arrays von der Datumszeichenfolge zu überprüfen. Ist es möglich, sie automatisch im Kalender oder im Datumsobjekt zu analysieren?