1. #1
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2017
    Messages : 4
    Points : 3
    Points
    3

    Par défaut Convertir date avec mois en lettres dans Talend

    Bonjour ,

    je souhaite convertir une date du type "Dec 1; 2016 00:00:00" en un format de date yyyy-MM-dd

    Mais ça ne fonctionne pas .

    Ci-dessous le code dans mon tmap.

    TalendDate.formatDate("yyyy-MM-dd", TalendDate.parseDate("MMM dd';' yyyy HH:mm:ss", row1.newColumn1 )


    date à convertir qui est dans la variable row1.newColumn1 => Dec 1; 2016 00:00:00

    Merci de votre aide.

  2. #2
    Membre éprouvé Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2010
    Messages
    547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : octobre 2010
    Messages : 547
    Points : 1 095
    Points
    1 095

    Par défaut

    Citation Envoyé par onyx1329 Voir le message
    Bonjour ,

    je souhaite convertir une date du type "Dec 1; 2016 00:00:00" en un format de date yyyy-MM-dd

    Mais ça ne fonctionne pas .

    Ci-dessous le code dans mon tmap.

    TalendDate.formatDate("yyyy-MM-dd", TalendDate.parseDate("MMM dd';' yyyy HH:mm:ss", row1.newColumn1 )


    date à convertir qui est dans la variable row1.newColumn1 => Dec 1; 2016 00:00:00

    Merci de votre aide.
    Ma réponse serait que Talend n'utilise pas SimpleDateFormat... Mais un autre framework plus rapide (FastDateParser)...
    De plus seul les caractères alphabétique doivent être quoté donc "MMM dd';' yyyy HH:mm:ss" est à remplacé par "MMM dd; yyyy HH:mm:ss"
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discutions est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2017
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    @ supergeoffrey Merci pour ton message mais ça ne marche toujours pas malgré l’enlèvement des quottes comme tu l'as préconisé .

    ci-dessous l'errreur obtenue .

    java.lang.RuntimeException: java.text.ParseException: Unparseable date: "Begin date"
    at routines.TalendDate.parseDate(TalendDate.java:895)
    at routines.TalendDate.parseDate(TalendDate.java:839)
    at local_project.secondjob_0_1.secondJob.tFileInputDelimited_1Process(secondJob.java:1046)
    at local_project.secondjob_0_1.secondJob.runJobInTOS(secondJob.java:1484)
    at local_project.secondjob_0_1.secondJob.main(secondJob.java:1341)
    Caused by: java.text.ParseException: Unparseable date: "Begin date"
    at java.text.DateFormat.parse(Unknown Source)
    at routines.TalendDate.parseDate(TalendDate.java:881)
    ... 4 more

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    décembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : décembre 2016
    Messages : 42
    Points : 69
    Points
    69

    Par défaut

    Citation Envoyé par onyx1329 Voir le message
    java.lang.RuntimeException: java.text.ParseException: Unparseable date: "Begin date"
    at routines.TalendDate.parseDate(TalendDate.java:895)
    at routines.TalendDate.parseDate(TalendDate.java:839)
    at local_project.secondjob_0_1.secondJob.tFileInputDelimited_1Process(secondJob.java:1046)
    at local_project.secondjob_0_1.secondJob.runJobInTOS(secondJob.java:1484)
    at local_project.secondjob_0_1.secondJob.main(secondJob.java:1341)
    Caused by: java.text.ParseException: Unparseable date: "Begin date"
    at java.text.DateFormat.parse(Unknown Source)
    at routines.TalendDate.parseDate(TalendDate.java:881)
    ... 4 more
    Ton fichier a certainement un entête de colonne. C'est très souvent la première colonne.
    Je suppose que la colonne que tu veux convertir c'est Begin date, et ton script est entrain de chercher à convertir cette chaine en date; ce qui n'est pas possible.

    Tu peux indiqué l’entête de colonne dans la configuration du tFileInputDelimited.

    N'hésite pas si autre difficultés.

    Cdt,
    wcfsmart

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2017
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    @wcfsmart Merci pour ton retour.

    J'ai indiqué l’entête de colonne dans la configuration du tFileInputDelimited.
    Et ensuite j'obtiens l'erreur ci-dessous .


    En résumé comment aurais tu fais pour convertir la date suivante avec talend ?
    (Dec 1; 2016 00:00:00) to (2016/12/01 00:00:00) avec tmap de talend ?

    Merci bcp !

    Erreur Obtenue :

    Démarrage du job secondJob a 20:54 24/04/2017.
    [statistics] connecting to socket on port 3899
    [statistics] connected
    Exception in component tMap_1
    java.lang.RuntimeException: java.text.ParseException: Unparseable date: "Dec 1; 2016 00:00:00"
    at routines.TalendDate.parseDate(TalendDate.java:895)
    at routines.TalendDate.parseDate(TalendDate.java:839)
    at local_project.secondjob_0_1.secondJob.tFileInputDelimited_1Process(secondJob.java:1276)
    at local_project.secondjob_0_1.secondJob.runJobInTOS(secondJob.java:1716)
    at local_project.secondjob_0_1.secondJob.main(secondJob.java:1573)
    Caused by: java.text.ParseException: Unparseable date: "Dec 1; 2016 00:00:00"
    at java.text.DateFormat.parse(Unknown Source)
    at routines.TalendDate.parseDate(TalendDate.java:881)
    ... 4 more
    [statistics] disconnected
    Job secondJob terminé à 20:54 24/04/2017. [Code sortie=1]

  6. #6
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    décembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : décembre 2016
    Messages : 42
    Points : 69
    Points
    69

    Par défaut

    Citation Envoyé par onyx1329 Voir le message
    @wcfsmart Merci pour ton retour.

    J'ai indiqué l’entête de colonne dans la configuration du tFileInputDelimited.
    Et ensuite j'obtiens l'erreur ci-dessous .


    En résumé comment aurais tu fais pour convertir la date suivante avec talend ?
    (Dec 1; 2016 00:00:00) to (2016/12/01 00:00:00) avec tmap de talend ?

    Merci bcp !

    Erreur Obtenue :

    Démarrage du job secondJob a 20:54 24/04/2017.
    [statistics] connecting to socket on port 3899
    [statistics] connected
    Exception in component tMap_1
    java.lang.RuntimeException: java.text.ParseException: Unparseable date: "Dec 1; 2016 00:00:00"
    at routines.TalendDate.parseDate(TalendDate.java:895)
    at routines.TalendDate.parseDate(TalendDate.java:839)
    at local_project.secondjob_0_1.secondJob.tFileInputDelimited_1Process(secondJob.java:1276)
    at local_project.secondjob_0_1.secondJob.runJobInTOS(secondJob.java:1716)
    at local_project.secondjob_0_1.secondJob.main(secondJob.java:1573)
    Caused by: java.text.ParseException: Unparseable date: "Dec 1; 2016 00:00:00"
    at java.text.DateFormat.parse(Unknown Source)
    at routines.TalendDate.parseDate(TalendDate.java:881)
    ... 4 more
    [statistics] disconnected
    Job secondJob terminé à 20:54 24/04/2017. [Code sortie=1]
    Je n'ai pas la possibilité de tester tout de suite, mais sinon, tu as une autre possibilité
    Talend te donne également la possibilité d'écrire tes propres routines

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Business MOdeles
    Job Designs
    Contexts
    Code
    -->Routines
    -->-->System
    .....
    SQL Templates
    Et je pense que c'est beaucoup plus flexible que tjava et autres...

    bonne journée
    wcfsmart

  7. #7
    Membre éprouvé Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2010
    Messages
    547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : octobre 2010
    Messages : 547
    Points : 1 095
    Points
    1 095

    Par défaut

    Il y avait deux raisons voici une routine qu'il le fait
    Je me suis aidé de ce lien pour un bug http://stackoverflow.com/questions/3...mss-a-to-mm-dd

    Code java : 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
    package routines;
     
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;
     
     
    public class JavaDateFormat {
     
    	public static final Date parseDate(String pattern, String date){
    		try{
    			//return new SimpleDateFormat(pattern).parse(date);
    			return new SimpleDateFormat(pattern,Locale.US).parse(date);
    		}
    		catch(Exception e){
    			e.printStackTrace();
    			return null;
    		}
    	}
     
    	public static final String formatDate(String pattern, Date date){
    		try{
    			//return new SimpleDateFormat(pattern).format(date);
    			return new SimpleDateFormat(pattern,Locale.US).format(date);
    		}
    		catch(Exception e){
    			e.printStackTrace();
    			return null;
    		}	
    	}	
     
    	public static void main(String[] args) {
    		System.out.println(JavaDateFormat.formatDate("yyyy-MM-dd", JavaDateFormat.parseDate("MMM dd; yyyy HH:mm:ss", "Dec 1; 2016 00:00:00" ))) ; //2016-12-01
    	}
    }
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discutions est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  8. #8
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    décembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : décembre 2016
    Messages : 42
    Points : 69
    Points
    69

    Par défaut

    Bonjour,

    Avec la routine, ça marche parfaitement.

    Cependant, il était possible de le faire avec talend :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TalendDate.formatDate("yyyy-MM-dd", TalendDate.parseDateLocale("MMM dd; yyyy HH:mm:ss", "Dec 1; 2016 00:00:00","EN") )
    Dans le format de date Dec 1; 2016 00:00:00, pour une bonne interprétation de "Dec" comme étant Décembre, il faut impérativement indiquer la langue.
    Un mois comme Avril, en français Avr et en anglais Apr, l’interprétation devient impossible si on ne connait pas en quelle langue c'est écrit.

    C'est pour cela qu'au lieu d'utiliser TalendDate.parseDate, il faut plutot utiliser TalendDate.parseDateLocale en indiquant la langue. (Pour ton cas, rassure toi que c'est bien l'anglais, sinon tu n'es pas à la fin des surprises.)

    Bonne journée
    wcfsmart

  9. #9
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2017
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    Thanks all !!!!

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

Discussions similaires

  1. [XL-2010] Trouver une date (mois et année) dans une colonne avec plusieurs dates
    Par merlinus3000 dans le forum Excel
    Réponses: 9
    Dernier message: 07/06/2015, 09h34
  2. Réponses: 6
    Dernier message: 26/10/2013, 12h32
  3. Convertir date jj/mm/a en 01-moi-10 dans une listbox
    Par typhoon751 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/10/2010, 10h18
  4. [PHP] Affichage date avec mois en français
    Par vixious dans le forum PHP & MySQL
    Réponses: 11
    Dernier message: 16/06/2009, 12h30
  5. Date avec mois sur 3 lettres
    Par zizou771 dans le forum PL/SQL
    Réponses: 9
    Dernier message: 28/08/2008, 15h26

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