Wie um zu überprüfen, die Gültigkeit von Datums-String?

In mein Projekt, ich brauche, um zu überprüfen, ob ein Datum-string auswertet, zu einem richtigen Date-Objekt. Ich habe entschieden zu erlauben, yyyy-MM-dd, und Datum-Formate [(Jahr, Monat, Datum) (Jahr, Monat, Tag, STD, min)]. Wie kann ich prüfen, ob Sie gültig sind ? Mein code gibt null für "1980-01-01" und einige seltsame Daten (wie 3837.05.01) whon geben einen string, getrennt durch Kommas :

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 hatte, um zu subtrahieren 1900 von Jahr Datum, aber ich sehe auch, dass Monat ist anders etc, und ich möchte vermeiden, überprüfen Sie jedes element meines Arrays mit int-Werten, die aus den Datums-string. Ist es möglich zu analysieren, die Sie automatisch in Kalender-oder date-Objekt ?

  • Herzlich willkommen auf Stack Overflow! Diese lösen nicht dein problem direkt, aber du bist mit try-catch-Blöcke zu implementieren, Ihre Logik, und Sie können finden, die Dinge werden klarer, wenn Sie behalten uns Ausnahmen bei außergewöhnlichen Bedingungen.
  • Mehr relevant zu deinem problem: was ist yyy-mm-dd format? Würde "999-10-10" bedeutet, Oktober 10, 1999? Oder Oktober 10, 999? Oktober 10, 2099?
  • Hoppla, es sollte yyyy
InformationsquelleAutor dbnazz | 2010-10-24
Schreibe einen Kommentar