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. #21
    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
    Ben ça compile même pas, et je ne vois pas vraiment ce que tu veux faire avec ce code.
    Honnêtement je ne comprends pas pourquoi tu cherche midi à 14 heures alors que tu as déjà la solution .
    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

  2. #22
    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
    +1
    Tu ne peux pas comparer un String avec un DateFormat par la méthode "inputFormat.equals(defineFormat)", ça n'a pas de sens.

    Si tu cherches des précisions sur les formats de date, autre que le code que Le y@m's t'a donné (faire tes propres expériences, savoir comment ça fonctionne, ...), il faudra copier/coller le code que tu utilises, pour que nous puissions ne serait-ce que tester.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    et c'est quoi ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class zzzz throws DatesException {
    ?

  4. #24
    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
    Enfait, je me suis tromper, je voulais tester ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (inputFormat.equals(format)//
    voilà

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DateFormat defineFormat = new SimpleDateFormat("dd-MMM-yyyy");
    String format = DateFormat.getDateInstance().format(defineFormat );
    Ce code compilera jamais, format() attend une date en paramètre et tu lui passe un DateFormat, ca a strictement rien à voir. Faut lire la javadoc pour voir quels paramètre prennent les méthode avant d'écrire le code.

  6. #26
    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
    Pour tester ton format, le y@m's t'as donné le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    String inputFormat = "18-décembre-2008";
    DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
    try {
        Date date = dateFormat.parse(inputFormat);    // ok, date au bon format
    } catch(ParseException ex) {
        throw new DatesException(inputFormat,ex) ;
    }
    inputFormat = "18-12-2008";
    try {
        Date date = dateFormat.parse(inputFormat );    // date au mauvais format -> lève une ParseException
    } catch(ParseException ex) {
        throw new DatesException(inputFormat,ex) ;
    }

  7. #27
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Ce que je vois depuis le début de cette discussion, c'est que cashmoney semble ne pas avoir compris comment se servir de la classe DateFormat (d'où les propositions de code "absurdes" avec confusions entre String, Date et DateFormat, entre date et pattern, etc).
    Ce n'est pas bien grave mais peut-être qu'une petite remise à plat permettrait de mettre les choses au clair.

    DateFormat permet de passer d'une date à une représentation en chaîne de caractères, et vice-versa, en fonction d'un format défini.
    Les deux méthodes principales sont donc :
    • format : Date => String ; on part d'une date et on en obtient la représentation selon le format prédéfini
    • parse : String => Date ; on part d'une chaîne de caractère et on essaie d'en déduire la date représentée selon le format prédéfini (il est alors possible que la chaîne ne corresponde pas du tout au format, ce qui lèvera une exception)

    Dans le cas de la classe SimpleDateFormat, on définit le format par une chaîne de caractère (par exemple "dd/MM/yyyy") dans le constructeur. Cette chaîne n'est qu'un pattern[*] permettant de décrire le format à utiliser selon certaines conventions, elle ne peut pas être utilisée telle quelle pour être comparée a des dates !
    Tout cela est évidemment décrit dans la javadoc.

    Maintenant, pour en revenir au problème :
    Le but est de tester si une chaîne de caractères donnée représente bien une date dans un format donné.
    Pour cela, comme ça a déjà été dit, il suffit d'essayer de transformer la chaîne donnée en date selon le format donné, grâce à la méthode parse, qui va donc lever une exception si la chaîne de respecte pas le format. Il n'y a pas plus simple.

    A la rigueur, on peut compléter un peu ce test.
    En effet si je parse selon le format "dd/MM/yyyy" la chaîne "55/02/1985" ou "001/02/1985" je vais obtenir respectivement les dates du 27 mars 1985 et du 1er février 1985 sans qu'aucune erreur ne soit levée... ce qui n'est pas forcément le résultat attendu : les chaînes de caractères étaient certes "interprétables" selon le format donné mais on ne peut pas vraiment dire qu'elles étaient correctement formatées...
    On peut alors procéder comme suit : d'abord transformer la chaîne en date (=> éventuelle exception si cette transformation n'est pas possible) puis re-transformer la date obtenue en chaîne (=> on obtiendra alors bien la chaîne correctement formatée, donc "27/03/1985" ou "01/02/1985" dans mon exemple), puis comparaison de la chaîne de départ et de la chaîne finale.
    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
     
    public static void checkDateFormat(String date, String format)
    throws DateException
    {
    	SimpleDateFormat sdf = new SimpleDateFormat(format);
    	try {
    		Date parsedDate = sdf.parse(date);
    		String formattedDate = sdf.format(parsedDate);
    		if (!formattedDate.equals(date)) {
    			throw new DateException();
    		}
    	}
    	catch (ParseException e) {
    		throw new DateException();
    	}
    }
    => checkDateFormat("17/02/1985", "dd/MM/yyyy") ne fait rien puisque la date est bien formatée...
    => checkDateFormat("55/02/1985", "dd/MM/yyyy") lève une exception de type DateException
    => checkDateFormat("001/02/1985", "dd/MM/yyyy") lève une exception de type DateException



    [*] "motif" pour les francophones, mais quand toute la doc est en anglais je trouve que les traductions ne font qu'embrouiller tout le monde...

  8. #28
    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 vos proposition, ce que je voulais c'était juste ce petit bout de code
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    public static void test_date(String str, boolean good){
     
            Pattern datePattern;
            Matcher matcher;
            String jj;
            String mm;
            String yyyy;
     
            datePattern = Pattern.compile("^(\\d{2})-(\\d{2})-(\\d{4})$");
     
            matcher = datePattern.matcher(str.trim());
     
            if(!matcher.find()) 
            {
    	Afficher("format date invalide");
    		good = false;// là, je lève mon DatesException            
            }
     
             if(matcher.find()) {// on teste les champs precisement
                    jj = matcher.group(1);
                    mm = matcher.group(2);
                    yyyy = matcher.group(3);
     
                    if( (Integer.valueOf(jj) <0) || (Integer.valueOf(jj)>31) 
                    	|| (Integer.valueOf(mm) <0) || (Integer.valueOf(mm)>12)	
                    	|| (Integer.valueOf(yyyy) <1970))
    			{
                  Afficher("Mauvaise date");
                  good = false;// ici aussi, je lève mon DatesException
    			}
                  good = true;
             }
     
    }
    j'ai fais un Main de teste pour vérifier avec une boucle, mais j'ai un soucis
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    public static void main(String[] args) throws IOException, ParseException,
    			java.text.ParseException {
    		// TODO Auto-generated method stub
    		boolean check_date = false;
    		Date date = new Date();
    		String str_date;
     
    		do{
    		Afficher("Entrer une date - (dd-MM-yyy)");
    		Scanner sc = new Scanner(System.in);
    		str_date = sc.nextLine();
    		test_date(str_date, check_date);
    		}
                             while(check_date == false);
    		DateFormat df = new SimpleDateFormat("dd-MM-yyyy", Locale.FRENCH);
    		date = df.parse(str_date);
    		String format = DateFormat.getDateInstance().format(date);
    		Afficher("Format US: " + date);
    		Afficher("Format FR: " + format);
     
    	}
     
    	public static void test_date(String str, boolean good){
                 ...
     
     
                 private static <T> void Afficher(T e) {
    		System.out.println(e.toString());
    		// TODO Auto-generated method stub
     
    	}
     
    }
    quand je rentre une date "12/12/2008" il marche nikel il m'afficher " format date invalide", mais quand je rentre cette date "32-12-2008" il m'affiche encore format date invalide au lieu de "Mauvaise Date" et je tourne en rond quand j'ai une bonne date. C'est bizarre que je me perds en boucle, merci pour votre aide.

  9. #29
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Va falloir revoir les base de la programmation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		do{
    		Afficher("Entrer une date - (dd-MM-yyy)");
    		Scanner sc = new Scanner(System.in);
    		str_date = sc.nextLine();
    		test_date(str_date, check_date);
    		}	    while(check_date == false);
    Ne risque pas de finir un jour, tu ne modifie jamais check_date

  10. #30
    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
    Oui, tu devrais plutôt faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    boolean dateOK = false;
    do{
    Afficher("Entrer une date - (dd-MM-yyy)");
    Scanner sc = new Scanner(System.in);
    str_date = sc.nextLine();
    dateOK = test_date(str_date);
    } while(!dateOK);
    En remplacant la méthode test_date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static boolean test_date(String str)
    Ensuite, je ne connais pas trop les pattern, mais si j'ai bien lu la doc :
    renvoie un boolean si la pattern est de nouveau trouvé (un peu comme nextLine(), qui renvoi null quand il n'y a plus de ligne).

    Essai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(!matcher.find()) 
    {
    Afficher("format date invalide");
    good = false;// là, je lève mon DatesException            
    }
    //  if(matcher.find()) {// on teste les champs precisement
      else {// on teste les champs precisement

  11. #31
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par cashmoney Voir le message
    quand je rentre cette date "32-12-2008" il m'affiche encore format date invalide au lieu de "Mauvaise Date"
    Tu es sûr ? parce que chez moi Pattern.compile("^(\\d{2})-(\\d{2})-(\\d{4})$").matcher("32-12-2008").find() renvoie bien true...

    Et, si je puis me permettre, je trouve quand même ma solution (parse puis format puis comparaison avec la chaîne initiale) bien plus facile à mettre en place, et surtout bien plus complète puisqu'elle prend également en compte des subtilités non traitées dans ton code comme par exemple le fait que tous les mois n'ont pas 31 jours...

  12. #32
    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
    Citation Envoyé par Astartee Voir le message
    Et, si je puis me permettre, je trouve quand même ma solution (parse puis format puis comparaison avec la chaîne initiale) bien plus facile à mettre en place, et surtout bien plus complète puisqu'elle prend également en compte des subtilités non traitées dans ton code comme par exemple le fait que tous les mois n'ont pas 31 jours...
    +1 pourquoi s'embêter avec des expressions régulières

    si ce n'est que la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String formattedDate = sdf.format(parsedDate);
    if (!formattedDate.equals(date)) {
        throw new DateException();
    }
    est inutile puisque tu utilises le même format pour parser/formatter, les deux chaînes sont forcement égales (à condition que le parsing n'ai pas levé d'exception bien entendu) .
    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

  13. #33
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par le y@m's Voir le message
    si ce n'est que la partie [...] est inutile puisque tu utilises le même format pour parser/formatter, les deux chaînes sont forcement égales (à condition que le parsing n'ai pas levé d'exception bien entendu) .
    NON les deux chaînes ne sont pas forcément identiques, voir les deux exemples que j'ai cités

  14. #34
    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, mais je ne m'embête pas, en fait je le fait pour approfondir mes connaissances en java, alors il n'y a pas de mal à utiliser des expressions régulières. Je suis là, pour que vous puissiez m'aider dans ma quête de connaissance. Enfin, si je maîtrise comme vous, je pourrais utiliser la facilité.
    Merci

  15. #35
    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
    Citation Envoyé par Astartee Voir le message
    NON les deux chaînes ne sont pas forcément identiques, voir les deux exemples que j'ai cités
    Oui pardon, j'avais oublié ce point .
    Mais pour le corrigé il suffit d'utiliser la méthode DateFormat.setLenient() en lui passant false en paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    sdf.setLenient(false);
    Plus propre .
    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. #36
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par cashmoney Voir le message
    Merci, mais je ne m'embête pas, en fait je le fait pour approfondir mes connaissances en java, alors il n'y a pas de mal à utiliser des expressions régulières. Je suis là, pour que vous puissiez m'aider dans ma quête de connaissance. Enfin, si je maîtrise comme vous, je pourrais utiliser la facilité.
    Pas de problème, c'est juste que quand on voit quelqu'un ré-inventer la roue on n'imagine pas toujours que c'est fait exprès


    Citation Envoyé par le y@m's Voir le message
    Oui pardon, j'avais oublié ce point . Mais pour le corrigé il suffit d'utiliser la méthode [...] Plus propre .
    Ah ouais, beaucoup plus propre, en effet Je dis toujours de lire la Javadoc mais visiblement je ne lis pas tout en entier moi-même
    Bon, j'aurai au moins appris quelque chose aujourd'hui...

  17. #37
    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, à tous j'ai trouver mon bonheur. j'ai juste encore modifier ma petite méthode et fait des testes et tout est nikel. il suffit d'utiliser cette méthod epour vérifier le format des dates dans mon constructeur pour lever mon exception.
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    public class EssaiDate {
     
    	/**
             * @param args
             * @throws IOException,
             *             ParseException, java.text.ParseException
             * @throws ParseException
             */
    	public static void main(String[] args) throws IOException, ParseException,
    			java.text.ParseException {
    		// TODO Auto-generated method stub
    		boolean check_format = true;
    		Date date = new Date();
    		String str_format;
     
    		do{
    		Afficher("Entrer une date - (dd-MM-yyy)");
    		Scanner sc = new Scanner(System.in);
    		str_format = sc.nextLine();
    		check_format = test_format(str_format);
    		}
    		while(!check_format);
    		DateFormat df = new SimpleDateFormat("dd-MM-yyyy", Locale.FRENCH);
                              df.setLenient(false);
    		date = df.parse(str_format);
    		String format = DateFormat.getDateInstance().format(date);
    		Afficher("Format US: " + date);
    		Afficher("Format FR: " + format);
     
    	}
     
    	public static boolean test_format(String str){
     
    		boolean good = false;
    		Pattern datePattern;
            Matcher matcher;
            String jj;
            String mm;
            String yyyy;
     
            datePattern = Pattern.compile("^(\\d{2})-(\\d{2})-(\\d{4})$");
     
            matcher = datePattern.matcher(str.trim());
     
            if(!matcher.find()) 
            {
    	Afficher("Format date invalide");
    		good = false;             
            }
     
            else {
            	good = true;
     
                    jj = matcher.group(1);
                    mm = matcher.group(2);
                    yyyy = matcher.group(3);
     
                    if( (Integer.valueOf(jj) <0) || (Integer.valueOf(jj)>31) 
                    	|| (Integer.valueOf(mm) <0) || (Integer.valueOf(mm)>12)	
                    	|| (Integer.valueOf(yyyy) <1970))
    			{
                  Afficher("Mauvais Date");
                  good = false;
    			}
     
             } return good;
     
    }
     
    	private static <T> void Afficher(T e) {
    		System.out.println(e.toString());
    		// TODO Auto-generated method stub
     
    	}
     
    }
    Merci encore à tous, c'est excellent ce forum
    Ps : ya pa moyen de voir le code en entier sans la barre de défilement?? merci

  18. #38
    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
    (Pour le "PS") Non, il faut utiliser au pire plusieurs balises CODE.
    Sinon, il y a toujours la remarque des dates incorrects : "30-02-2009" va passer avec ton code. Mais pour celà, il suffit de vérifier la date, une fois le test sur le pattern effectué.
    Autre chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		DateFormat df = new SimpleDateFormat("dd-MM-yyyy", Locale.FRENCH);
    		date = df.parse(str_format);
    		String format = DateFormat.getDateInstance().format(date);
    		Afficher("Format US: " + date);
    		Afficher("Format FR: " + format);
    Tu déclare df avec "Locale.FRENCH", puis tu affiche "Format US". C'est pas très logique Même si date est un objet Date. C'est donc le date.toString() qui va s'appliquer (et donc donner probablement le même format que "format".
    Et pareil, "format" affichera la date dans le format local, donc dans la langue de l'utilisateur (de son système d'exploitation).

  19. #39
    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, mais pour vérifier la date après le test patern, je fais comment?? En fait le locale.FRENCH, quand je parse le format ( ex : 25-02-2005) de ma date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    date = df.parse(str_format);
    Quand j'affiche date, il me sort ce format là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fri Feb 25 00:00:00 CET 2005
    alors que j'ai locale.FRENCH alors pour le lire en français, je le rend en String et là il m'affiche
    Peux-tu m'expliquer pourquoi il ne met pas directement en Français du 1er coup? Et aussi j'ai remarqué que mon patern ("^(\\d{2})-(\\d{2})-(\\d{4})$") n'aime pas les points "." comme séparateur. Pourquoi?
    Merci pour vos reponses

  20. #40
    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
    Pour vérifier si la date est correct, il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DateFormat df = new SimpleDateFormat("dd-MM-yyyy", Locale.FRENCH);
    df.setLenient(false);
    date = df.parse(str_format);
    Il y aura alors une exception.

    Pour les formats, tu fais un "Afficher("Format US: " + date);". Il affiche donc "date.toString()". Pour changer ça, il faut faire "Afficher("Format US: " + df.format(date));". Mais là, tu n'es plus en format US.

    Pour le pattern, le caractère "." correspond à un caractère à échapper, comme le "\". Mais là, je ne sais pas comment les échapper (peut être en mettant "\" devant ?)

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 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