IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Codes sources à télécharger Java Discussion :

Une fonction pour vérifier si une saisie est une date


Sujet :

Codes sources à télécharger Java

  1. #1
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut Une fonction pour vérifier si une saisie est une date
    Bonjour,

    Je vous propose un nouvel élément à utiliser : Une fonction pour vérifier si une saisie est une date

    les saisies des dates erronées en avez-vous marre? Voici une proposition d'une fonction vérifiant si une date est correcte dans un format donné. Elle est accompagné de javadoc pour plus de détails. Les formats supportés sont yyyy/MM/dd et dd/MM/yyyy

    Qu'en pensez-vous ?
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    sympa pour les débutants, mais

    - pourquoi parser par une variable intermédiaire s et pas directement st ?
    - pourquoi créer une instance de date non utilisée (lignes 14 et 27) ?
    - au lieu de tracer dans le System.out en cas de format non supporté, ce serait
    mieux de soulever une exception dédiée (UnsupportedFormatException), en particulier pour ceux qui veulent pouvoir traiter en amont que le format est non supporté
    - admettons de contraindre à 2 formats supportés (perso je trouve ça vraiment super limité) mais pourquoi contraindre l'utilisateur à les passer en argument : autant fournir une énumération avec 2 valeurs, ou à la limite des constantes !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Pourquoi passer par cette méthode complexe alors que, de toutes façons on va vouloir la parser après -> On aura un DateFormat -> Autant l'utiliser directement.


    Le code de la FAQ est plus simple à ce sujet:
    http://java.developpez.com/faq/java/...E_DATE_Lenient

  4. #4
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut Mise à jour de la méthode
    Salut,
    Merci pour toutes ces remarques aussi constructives qu'elles soient . J'ai jugé mieux de mettre à jour la méthode en tenant compte de quelques unes de ces remarques et les points touchés sont les suivants:
    - pourquoi parser par une variable intermédiaire s et pas directement st ?

    - pourquoi créer une instance de date non utilisée (lignes 14 et 27) ?

    - admettons de contraindre à 2 formats supportés (perso je trouve ça vraiment super limité)

    - Le code de la FAQ est plus simple à ce sujet:
    http://java.developpez.com/faq/java/...E_DATE_Lenient
    Néanmoins, ce que je n'ai pas pu réaliser c'est:
    - admettons de contraindre à 2 formats supportés (perso je trouve ça vraiment super limité) mais pourquoi contraindre l'utilisateur à les passer en argument : autant fournir une énumération avec 2 valeurs, ou à la limite des constantes !
    Si Joel.Drigo serait gentil de m'aider à y parvenir car l'énumération ne prend pas en charge la présentation des formats (yyyy/MM/dd ou dd/MM/yyyy)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public enum format{
        yyyy/MM/dd, dd/MM/yyyy
        }
    Merci beaucoup
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par MasterMbg Voir le message
    Si Joel.Drigo serait gentil de m'aider à y parvenir car l'énumération ne prend pas en charge la présentation des formats (yyyy/MM/dd ou dd/MM/yyyy)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public enum format{
        yyyy/MM/dd, dd/MM/yyyy
        }
    Merci beaucoup
    Euh, bah, par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public enum Format {
        FRANCAIS, ANGLAIS
    }
    et un switch dans la méthode pour sélectionner le format associé.

    ou :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public enum Langue{
        FRANCAIS("dd/MM/yyyy"), ANGLAIS("yyyy/MM/dd");
        public final String format;
        private Langue(String format) {
            this.format=format;
        }
    }
    et dans la méthode ça s'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public boolean ver(String st, Langue langue) {
    ...
    SimpleDateFormat sdf=new SimpleDateFormat(langue.format);
    ...
    }
    EDIT: au lieu d'une enum, on pourrait également utiliser un argument de type java.util.Locale
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Pourquoi passer par cette méthode complexe alors que, de toutes façons on va vouloir la parser après -> On aura un DateFormat -> Autant l'utiliser directement.


    Le code de la FAQ est plus simple à ce sujet:
    http://java.developpez.com/faq/java/...E_DATE_Lenient
    C'est vrai dans le cas général, mais on peut avoir des programmes qui ne traitent pas les saisies de date en java.util.Date (un client/serveur ou ce traitement est fait coté serveur uniquement par exemple, un générateur de fichier texte avec des données de type date, etc.) et on veut simplement faire de la validation coté client (c'est vrai que pour valider une saisie dans un formulaire de saisie utilisant un JFormattedTextField ou un composant "date picker" cette fonction est également inutile).

    On peut transformer la fonction pour qu'elle renvoit un java.util.Date au lieu d'un booléen aussi.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    @joel.drigo
    Oui, il y a des cas où on ne passe pas par le parse par la suite. Cependant, en général toutes les dates dans le programmes sont contrainte au même format -> C'est con d'aller créer le DateFormat à chaque fois dans la méthode.
    Ce code fait 3 ligne à écrire.

    Même si on met ça dans une méthode pour factoriser (ce que je recommande fortement), la méthode sera spécifique à chaque utilisateur -> je trouve ça assez prétentieux d'aller mettre ça dans la section téléchargez de DVP. C'est pas un endroit pour taper tous les bout de code qu'on a écrit sur des coins de table à la pause déjeuner. Après on aurait un truc pour vérifier si c'est un nombre, un autre pour vérifier si c'est positif et un autre pour savoir si mon chat veux du thon ou du poulet aujourd'hui.

  8. #8
    Membre éclairé Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Points : 698
    Points
    698
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Après on aurait un truc pour vérifier si c'est un nombre, un autre pour vérifier si c'est positif et un autre pour savoir si mon chat veux du thon ou du poulet aujourd'hui.
    C'est déjà le cas (ici)

    J'avoue qu'il y a peu de chance que j'utilise ce type de code, surtout que la plupart des frameworks proposent des vérifications de ce genre intégrées.

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    @joel.drigo
    Oui, il y a des cas où on ne passe pas par le parse par la suite. Cependant, en général toutes les dates dans le programmes sont contrainte au même format -> C'est con d'aller créer le DateFormat à chaque fois dans la méthode.
    Ce code fait 3 ligne à écrire.
    Certes, c'est tout juste un ersatz de tuto pour débutant sans les explications qui vont avec. Y'a un modérateur sur la partie téléchargez je suppose pour faire le tri.

    Même si on met ça dans une méthode pour factoriser (ce que je recommande fortement), la méthode sera spécifique à chaque utilisateur -> je trouve ça assez prétentieux d'aller mettre ça dans la section téléchargez de DVP.
    Oui, c'est sur.

    Après on aurait un truc pour vérifier si c'est un nombre, un autre pour vérifier si c'est positif et un autre pour savoir si mon chat veux du thon ou du poulet aujourd'hui.
    Pour le coup, cette dernière méthode pourrait m'intéresser J'aurais à l'écrire que je serais bien ennuyé
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par joel.drigo Voir le message


    Pour le coup, cette dernière méthode pourrait m'intéresser J'aurais à l'écrire que je serais bien ennuyé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public enum Food{
      POULET,THON
    }
     
    public Food whatDoesCatWant(){
      throw new SorryException("Désolé, votre dernier chat est mort d'une insuffisance rénale il y a un an et demi");
    }
    J'avoue, mon implémentation ne concerne que mon cas

  11. #11
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Pour le coup, cette dernière méthode pourrait m'intéresser J'aurais à l'écrire que je serais bien ennuyé
    Merci pour avoir jeté un coup d'oeil sur la mise à jour que j'ai faite subir à ma méthode. C'est plutôt encourageant de ta part au lieu de jeter des pierres de feu sur les têtes des développeurs en cours d'expérience (ce qui porrait causer de dégoût de continer).
    Encore grand merci, je continuerai dans ce qu'est ma passion.
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/09/2014, 23h52
  2. [XL-2003] Vérifier que la saisie est une date
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/01/2013, 16h55
  3. Réponses: 4
    Dernier message: 05/11/2007, 12h21
  4. Réponses: 14
    Dernier message: 01/05/2007, 20h25
  5. Réponses: 17
    Dernier message: 14/02/2006, 01h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo