[JAVA] [Android] Créez une validation pour la saisie de la date!

Validation de la saisie de la date


Il peut arriver qu'un utilisateur souhaite invalider une valeur d'entrée incorrecte lors de la saisie d'une date de naissance ou d'une date de réservation, ou pour afficher une boîte de dialogue d'erreur. J'ai résumé l'implémentation de la validation utilisée dans un tel cas!

・ ↓ 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? ??

Code d'implémentation

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);
    }


Point 1

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)

Point 2

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.

Point 3

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é.

Recommended Posts

[Android] Créez une validation pour la saisie de la date!
Créez votre propre application Android pour l'apprentissage Java
valeur par défaut d'Android: exporté
Créer des fonctions avancées pour Yellowfin
Créer un environnement Spring pour Android 2.0.0