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

avec Java Discussion :

Convertir un format de date type String vers un format Date


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2019
    Messages : 5
    Par défaut Convertir un format de date type String vers un format Date
    Bonjour à tous,
    je sollicite votre aide pour transformer un format d'entrée type String vers un format de Date.
    J'essaie par exemple de passer de 12APR1930 à 1930-04-12 je lirais le String en entrée pour le transformer en date selon le format correspondant au 12APR1930, ce qui nous donnerais une date. Je modifierais ensuite le format de cette date avec TalendDate.formatDate pour correspondre à 1930-04-12 . Mais cette fonction retourne un String qu'il faudrait donc retransformer en date. Cela donnerait quelque chose comme :
    TalendDate.parseDate("yyyy-MM-dd",TalendDate.formatDate("yyyy-MM-dd",TalendDate.parseDateLocale("ddMMMyyyy",row3.DateNaissance,"EN")))

    Mais cela ne fonctionne pas je cherche donc une solution en JAVA pour coder cette transformation si vous avez des idées ...?
    En clair avec un fichier d'entrée et des dates type ddMMMyyyy arriver à une sortie en yyyy-MM-dd

    Merci d'avance
    Images attachées Images attachées  

  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 : 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,

    Normalement il suffirait, en passant par java.time de parser avec ddLLLyyyy puis de formater en yyyy-MM-dd. Le problème est que la casse correspondant à LLL donne Jun ou Apr, pas JUN ou APR. Il faut donc transformer cette casse avant de parser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private final static Pattern DATE_CASE_FIX = Pattern.compile("(?<!\\d)(\\D)");
    private static String convertDate(String dateInput) {
        Matcher m = DATE_CASE_FIX.matcher(dateInput);
        StringBuilder sb = new StringBuilder();
        while (m.find()) {
            m.appendReplacement(sb, m.group(1).toLowerCase());
        }
        m.appendTail(sb);
        dateInput = sb.toString();
     
        return LocalDate.parse(dateInput, DateTimeFormatter.ofPattern("ddLLLyyyy", Locale.US))
                          .format(DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.FRENCH));
     
    }
    A noter que ce que tu montres dans l'image comme sortie est dans le format ddLLLLyyyy.
    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
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Précisons quand même qu'utiliser le symbole M ou L pour le mois, n'a pas d'importance particulière en anglais ou en français.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    Citation Envoyé par thelvin Voir le message
    Précisons quand même qu'utiliser le symbole M ou L pour le mois, n'a pas d'importance particulière en anglais ou en français.
    M non effectivement, mais L si : LLL donne en anglais, Apr et en français, avril.
    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
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Non je voulais dire, L ou M c'est pareil. En tout cas dans des langages comme le français ou l'anglais.

    Au départ tout était fait avec M, et tu es venu donner des exemples qui utilisent L. Ça aurait pu paraître bizarre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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 : 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
    Ah, pour le parsing en effet... j'étais parti au début sur un format qui servait pour parser et formater, en partant de l'image et non de l'énoncé texte où j'ai remarqué qu'après que le format de destination en était différent, d'où l'emploi de L dans le parsing. On peut effectivement utiliser M à la place de L pour parser. Pour obtenir l'exemple de sortie visible dans l'image, au formattage donc, il faudra en revanche bien utiliser L, pour obtenir le nom du mois et non le numéro.

    EDIT
    Citation Envoyé par joel.drigo Voir le message
    On peut effectivement utiliser M à la place de L pour parser. Pour obtenir l'exemple de sortie visible dans l'image, au formattage donc, il faudra en revanche bien utiliser L, pour obtenir le nom du mois et non le numéro.
    Après test, je me rends compte qu'on peut utiliser M pour formater en texte. L & M semble effectivement interchangeable et fonctionner de la même manière que pour les java.util.SimpleDateFormat. Ce qui n'est pas conforme à la doc :
    Citation Envoyé par javadoc
      Symbol  Meaning                     Presentation      Examples
      ------  -------                     ------------      -------
       M/L     month-of-year               number/text       7; 07; Jul; July; J
    
    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.

Discussions similaires

  1. convertir un type string vers un type double
    Par hegros dans le forum C#
    Réponses: 2
    Dernier message: 16/06/2010, 09h11
  2. Conversion d'un type string vers date
    Par projetM dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 27/11/2008, 14h09
  3. Réponses: 17
    Dernier message: 07/07/2008, 11h34
  4. Réponses: 8
    Dernier message: 20/06/2008, 14h47
  5. Convertir une date en type string
    Par ziboux dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/10/2003, 10h52

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