・ ↓ Cliquez ici pour la mise en œuvre de la validation «Année» ↓ [Android] Comment mettre en œuvre une validation qui repousse les «années» invalides? ??
ValidationUtil.java
/**
*Vérifiez s'il s'agit d'une date valide
*Invalider les dates telles que le 13 et le 32
*
* @param inputBirthDateString
* @return
*/
public static Boolean dateValidation(String inputDateString){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
//Point 1
dateFormat.setLenient(false);
Date parsedDate = null;
try {
//Point 2
parsedDate = dateFormat.parse(inputDateString);
} catch (ParseException e) {
e.printStackTrace();
return false;
}
//Point 3
return dateFormat.format(parsedDate).equals(inputDateString);
}
Lenient: Généreux, miséricordieux, compatissant, (...) généreux, tolérant, doux → setLenient (false) élimine la générosité = signifie faire un contrôle strict.
La valeur par défaut est true, et avec ce paramètre, les dates inexistantes sont automatiquement déplacées vers le haut ou vers le bas. (Exemple: 32 janvier → 1er février)
Convertissez le type String en type Data à l'aide de SimpleDateFormat. Si la date est normale, l'analyse réussit. Renvoie false si la date n'est pas valide.
Il ne semble y avoir aucun problème avec le traitement jusqu'au point 2, mais il y a un problème en l'état. C'est parce que SimpleDateFormat traite avec une correspondance de préfixe. → Exemple: Si vous créez une instance de SimpleDateFormat au format de date "aaaa / MM / jj", vous pouvez mettre en forme la valeur "2017/12 / 1A" et elle sera traitée comme "1er décembre 2017".
→ Par conséquent, à la fin, "chaîne de caractères à valider" et "chaîne de caractères après conversion avec SimpleDateFormat" sont comparées, et par exemple, si 2017/12 / 1A est saisi, false est renvoyé.