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

Collection et Stream Java Discussion :

Exception sur date


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut Exception sur date
    Bonjour, débutant en java je voudrais créer une exception sur mes dates entrées.

    j'ai créé une classe DatesException, ensuite dans ma classe où je veux poser cette exception, je teste d'abord le format de ma date, si le format est respecté alors on continue sinon on lève l'exception.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
    Date dt = new Date();
    private DateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.FRENCH);
    String inDt;
     
    ....
    if (inDt!= df.format("dd-MMM-yyyy"))
    throw new DatesException(inDt);
    this.dt = df.parse(inDt);
    .....
    je voudrais juste savoir si je suis sur la bonne voie sur tout cette expression
    if (inDt!= df.format("dd-MMM-yyyy"))
    merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Par défaut
    A quoi correspond la variable inDt ?
    Sinon, que veux-tu tester ? Si le String entré peut être parsé en date ?

  3. #3
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    le inDt est le String que je vais parsé en Date mais avant je veux tester s'il est dans le bon format.
    voilà

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu dois appliquer ton pattern à la date. Utilise la méthode SimpleDateFormat#parse. Si la date n'est pas au bon format, la méthode envoie "null".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Merci pour le lien, mais ça m'aide vraiment pas. je veux juste avoir l'espression pour tester un format "String" au format standard de ma déclaration ("dd-MMM-yyy"). Merci

  6. #6
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Je ne vois pas trop l'intérêt de faire tout ça (création d'une nouvelle exception) puisque ce mécanisme existe déjà dans la méthode DateFormat.parse(String). En effet si la chaîne de caractère ne respecte pas le format, une ParseException est levée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
    try {
        Date date = dateFormat.parse("22-03-2009");    // ok, date au bon format
        date = dateFormat.parse("22/03/2009");    // date au mauvais format -> lève une ParseException
    } catch(ParseException ex) {
        System.out.println("format non respecté");
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  7. #7
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Merci pour ce petit code, je comprend tout à fait, mais est ce que l'on ne peut pas remplacer ("22-03-2009") par une expression standard comme "dd-MM-yyyy"?? du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Date dt = new Date();
    DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
    String inDt
     
        if (dateFormat.parse(inDt) != dateFormat.parse("dd-MMM-yyyy"));  // date au mauvais format
    ainsi à chaque fois qu'une date est entrée on le vérifie nous même avec notre code.
    Merci pour vos explications

  8. #8
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Je ne suis pas sûr d'avoir bien compris ta question, mais j'ai l'impression que tu n'as pas bien compris le fonctionnement du DateFormat.
    Celui-ci te permet de passer d'un String à un objet Date (ou inversement) en utilisant un format prédéfini.

    La première étape est de construire le DateFormat avec le format voulu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
    Après tu peux très bien utiliser une variable pour spécifier le format. Par exemple on peut imaginer une méthode getFormat() qui renverrait un format défini dans un fichier de config (après que se soit "dd-MM-yyyy" ou "dd/MM/yyyy" peu importe).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String format = getFormat();
    DateFormat dateFormat = new SimpleDateFormat(format);
    Bien sûr le format doit respecter certaine spécifications cf SimpleDateFormat sinon une exception est levée lors de l'instanciation du SimpleDateFormat.

    Ensuite pour parser un String, et donc vérifier qu'il correspond au format prédéfini, on utilise la méthode parse().
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  9. #9
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Merci, enfait je comprends très bien ce que vous m'avez tous écris. En fait, je suis en pleins TP où je crée une DatesException, et vérifié le format de ma date si pas le bon format, ma DatesException se lève.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class DatesException extends Exception {
    	public DatesException(String dat){
    		System.out.println("\n*** La Date est incorrecte, 'dd-MMM-yyy' ***");
    		System.out.println("\t la votre => "+dat);
    		System.out.println("************************************************");
    	}
     
    }
    voilà mon code DatesException, si je ve lever cette exception, il faut que je teste le format de ma date. En fait, c'est le teste que j'essaie de faire mais je n'y arrive pas.

  10. #10
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Et bien c'est ce que je t'avais expliqué dans mon premier post. Il te suffit de passer ta variable dat à la méthode parse() et remplacer le System.out.println dans le catch par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    throw new DatesException(dat);
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  11. #11
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Ah wai, c'est vrai. fallait le voir, ok j'essai et je vous dirai. Merci pour votre aide

  12. #12
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Désolé, je crois que je me suis vite emballé et au finish, j'ai pas compris. pour résumé
    j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class DatesException extends...
    ...
    ...
    j'ai ma classe où je pose mon exception
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class zzz throws DatesException
    ...
    if (format entré != format définis)
    throw new DatesException(format entré);
    ...
    le try et le catch je les place où?? parce que pour lever une exception, il faudra un jeu de teste.

  13. #13
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    le "jeu de test" est l'appel à la méthode parse(). Si une ParseException est levée, le test a échoué.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  14. #14
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Vous avez certainement raison, mais la methode parse() je ne la maîtrise pas du bout des doigt. dans ma class zzzz j'utilise l'expression df.parse(format enntré) pour transformer mon String en date. mais avant de le transformer en date je dois le tester et donc selon vous c'est là que la methode parse() entre en jeu??
    le code de la methode??

  15. #15
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    oui, la méthode parse permet de transformer un String en date ET vérifie en même temps la validité du format.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  16. #16
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    oui, mais la ùethode parse(), tu peux m'indiquer où le poser ou s'il ya un code, une ébauche de code??
    je sais que j'utilise un parse (dateformat.parse(String)) pour transformer mon string en date. et le dateformat.parse vérifier le format prédéfinis, mais comment le transformer directement et l'intégré à ma DatesException.

  17. #17
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Comme je te l'ai dis tous est dans le code de mon premier post :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
    try {
        Date date = dateFormat.parse(dat); 
    } catch(ParseException ex) {
        throw new DatesException(dat);    // une DatesException est levée si dat n'a pas le bon format
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  18. #18
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Merci pour ton aide, celà fonction mais je vais essayer de le paufiner.
    Merci pour ton aide

  19. #19
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Pense au au tag (bouton en bas à gauche)
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  20. #20
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Hello, je suis de retour et j'ai aussi réfléchis à une autre méthode mais qui est à clarifier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    class zzzz throws DatesException {
    ...
    Date dt = new Date();
    String inputFormat = "18-décembre-2008";
    DateFormat defineFormat = new SimpleDateFormat("dd-MMM-yyyy");
    String format = DateFormat.getDateInstance().format(defineFormat );
     
    if (inputFormat.equals(format) 
    { // on ajoute la date à notre constructeur
    this.dt = defineFormat.parse(inputFormat); 
    }
     
    else throw DatesException(inputFormat) ;
    // on lève l'exception sur le format entré
    ...
    ...
    est-ce que c'est faisable ça ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. L'exception sur les dates
    Par Humoule dans le forum Android
    Réponses: 9
    Dernier message: 10/09/2013, 13h11
  2. exception sur une date
    Par DJERDJAR YACINE dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 30/07/2007, 14h20
  3. [Tomcat] Exception sur JSP
    Par Malaussene dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 10/09/2004, 08h43
  4. Resutlat de calcul sur date formaté
    Par neness dans le forum SQL
    Réponses: 6
    Dernier message: 16/06/2004, 15h34
  5. Calcul sur date
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/09/2003, 08h55

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