・ ↓ Klicken Sie hier für die Validierungsimplementierung "Jahr" ↓ [Android] Wie implementiere ich eine Validierung, die ungültige "Jahre" abwehrt? ??
ValidationUtil.java
/**
*Überprüfen Sie, ob es sich um ein gültiges Datum handelt
*Ungültige Daten wie 13. und 32 ..
*
* @param inputBirthDateString
* @return
*/
public static Boolean dateValidation(String inputDateString){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
//Punkt 1
dateFormat.setLenient(false);
Date parsedDate = null;
try {
//Punkt 2
parsedDate = dateFormat.parse(inputDateString);
} catch (ParseException e) {
e.printStackTrace();
return false;
}
//Punkt 3
return dateFormat.format(parsedDate).equals(inputDateString);
}
Lenient: Großzügig, barmherzig, mitfühlend, (...) großzügig, tolerant, süß → setLenient (false) eliminiert Großzügigkeit = bedeutet eine strenge Überprüfung.
Die Standardeinstellung ist true. Mit dieser Einstellung werden nicht vorhandene Daten automatisch nach oben oder unten verschoben. (Beispiel: 32. Januar → 1. Februar)
Konvertieren Sie den String-Typ mit SimpleDateFormat in den Datentyp. Wenn das Datum normal ist, ist die Analyse erfolgreich. Gibt false zurück, wenn das Datum ungültig ist.
Es scheint kein Problem mit der Verarbeitung bis Punkt 2 zu geben, aber es gibt ein Problem, wie es ist. Dies liegt daran, dass SimpleDateFormat mit einer Präfixübereinstimmung verarbeitet wird. → Beispiel: Wenn Sie eine Instanz von SimpleDateFormat im Datumsformat "JJJJ / MM / TT" erstellen, können Sie den Wert "2017/12 / 1A" formatieren und dieser wird als "1. Dezember 2017" behandelt.
→ Daher werden am Ende "zu überprüfende Zeichenfolge" und "Zeichenfolge nach Konvertierung mit SimpleDateFormat" verglichen. Wenn beispielsweise 2017/12 / 1A eingegeben wird, wird false zurückgegeben.