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 :

Utilisation conversion d'une date avec la classe LocalDate


Sujet :

Collection et Stream Java

  1. #1
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut Utilisation conversion d'une date avec la classe LocalDate
    Bonjour ,

    Je souhaite formater une date saisie en entrée 2015-10-27 en 27 Octobre 2015, j'utilise les méthodes de la classe LocalDate ainsi :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public LocalDate getBirthDate() {
            DateTimeFormatter formatter =
                    DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.FRANCE);
            LocalDate date = LocalDate.now();
            String text = date.format(formatter);
            LocalDate parsedDate = LocalDate.parse(text, formatter);
            System.out.printf("%s%n", parsedDate);
            return birthDate;
        }
    Ma date n'est pas formatée.

    Merci d'avance.
    Transact.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Hello,

    une LocalDate n'est pas une String, elle n'a pas de format. Seule les String sont dans un format.

    "formatter une date" consiste à la convertir en une String qui représente le texte qu'on veut obtenir.
    Ça n'avait donc aucun sens de parser la String obtenue avec format(). Il fallait l'utiliser telle quelle.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    J'ai modifié le code , mais je n'obtiens toujours pas mon pattern
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public LocalDate getBirthDate() {
            System.out.print("Please enter your birthDate : ");
            String entry = TextIO.getlnString();
            String text = String.format(entry, "dd MMMM yyyy", Locale.FRANCE);
            System.out.printf("%s%n", text);
            return birthDate;
    }

  4. #4
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ta méthode TextIO.getlnString() retourne visible une String, que l'utilisateur va devoir formater selon le pattern que tu veux : parse (LocalDate birthDate = LocalDate.parse(entry, formatter);) ensuite cette String pour obtenir un LocalDate. Evidemment, il faut que tu attrapes les ParseException pour redmander la date tant que le format n'est pas adéquate (entry n'est pas parsable).

    PS. Accessoirement String.format() ne fonctionne pas du tout selon la syntaxe que tu emploies (voir la documentation à ce sujet).
    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.

  5. #5
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    PS. Accessoirement String.format() ne fonctionne pas du tout selon la syntaxe que tu emploies (voir la documentation à ce sujet).
    C'est ce dont je me suis rendu compte en visualisant l'API Java 8 de la méthode format de la classe String.

    Effectivement, il y a tout un lot d'exception à gérer ... j'usqu'à ce que la date soit saisie correctement.

    Merci encore .
    Transact.

  6. #6
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    Avec le code suivant :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     public String getBirthDate() {
            String entry = "23 Mars 1992";
            try {
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.FRANCE);
                LocalDate birthDate = LocalDate.parse(entry, formatter);
                System.out.printf("%s%n", birthDate);
            } catch (DateTimeParseException exc) {
                System.out.printf("%s is not parsable!%n", entry);
                throw exc;
            }
            return birthDate;
        }

    Je ne parviens toujours pas à parser la String en entrée convertit en LocalDate

  7. #7
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Déjà, sans parler de parser une date ou pas, ça ne compile pas, parce que birthDate n'existe que dans le bloc du try.

    Ensuite, quand tu as ce genre d'erreur, un bon moyen de comprendre est de tenter de faire l'inverse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     System.out.println(formatter.format(LocalDate.of(1992, Month.MARCH, 23)));
    Ceci affiche "23 mars 1992" : le problème vient donc possiblement de la majuscule au mot Mars. Si tu essayes maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public LocalDate getBirthDate() {
        String entry = "23 Mars 1992";
        try {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.FRANCE);
            LocalDate birthDate = LocalDate.parse( entry.toLowerCase() , formatter);
            System.out.printf("%s%n", birthDate);
            return birthDate;
        } catch (DateTimeParseException exc) {
            System.out.printf("%s is not parsable!%n", entry);
            throw exc;
        }
    }
    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.

  8. #8
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    Merci encore.
    Le problème est résolu.

  9. #9
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    Maintenant je souhaiterai convertir une LocalDate en String, comment procéder?

  10. #10
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Avec la méthode LocalDate.format().
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modification d'une date avec conversion vers mysql
    Par MlleL dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/05/2013, 06h36
  2. Parser une date avec un format
    Par titoine1978 dans le forum C++
    Réponses: 15
    Dernier message: 03/04/2006, 11h46
  3. [C#] Conversion d'une date
    Par Jos dans le forum ASP.NET
    Réponses: 1
    Dernier message: 03/02/2006, 16h50
  4. Conversion d'une date jj/mm/aaaa en N°sem
    Par GD67 dans le forum Access
    Réponses: 2
    Dernier message: 16/11/2005, 09h02
  5. [date] conversion d'une date et compatibilité access
    Par WriteLN dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/01/2005, 14h03

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