Manipuler et formater les dates avec TalendDate

@joekakone

Joseph Konka @joekakone

03/03/2026 · 8 min

Maîtrisez la classe TalendDate : conversion de formats, parsing de chaînes, calculs d'intervalles (J-1, J-30) et génération de chemins de fichiers dynamiques.

Dans le travail quotidien d'un ingénieur data, la manipulation des dates représente l'une des sources d'erreurs les plus courantes : un fichier CSV source au format français (DD/MM/YYYY), une base PostgreSQL attendant une norme ISO (YYYY-MM-DD), ou un besoin de filtrer les transactions sur la veille (J-1).

Pour standardiser ces traitements, Talend fournit la classe spécialisée TalendDate.

flowchart LR
    TXT["Texte Brut<br><i>'15/03/2026'</i>"] -->|parseDate()| OBJ["Objet java.util.Date<br><i>Représentation interne</i>"]
    OBJ -->|addDate(-1, 'dd')| JMOINS1["Calcul Temporel<br><i>Date de la veille</i>"]
    JMOINS1 -->|formatDate('yyyy-MM-dd')| OUT["Chaîne Normalisée<br><i>'2026-03-14'</i>"]
    style TXT fill:#f1f5f9,stroke:#64748b
    style OBJ fill:#fef3c7,stroke:#d97706,stroke-width:2px,color:#0f172a
    style JMOINS1 fill:#fed7aa,stroke:#ea580c,color:#0f172a
    style OUT fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#0f172a

1. Référence des fonctions de la classe TalendDate#

Toutes les méthodes de la classe TalendDate sont statiques et prêtes à l'emploi dans vos composants tMap ou tJava :

Méthode Rôle Paramètres & Exemple
getCurrentDate() Renvoie la date et l'heure système actuelles. TalendDate.getCurrentDate() \(\rightarrow\) Objet Date
formatDate(pattern, date) Convertit un objet Date en chaîne de caractères formatée. TalendDate.formatDate("yyyy-MM-dd", date) \(\rightarrow\) "2026-03-15"
parseDate(pattern, stringDate) Analyse une chaîne de caractères pour produire un objet Date. TalendDate.parseDate("dd/MM/yyyy", "15/03/2026") \(\rightarrow\) Objet Date
addDate(date, amount, unit) Ajoute ou soustrait des unités de temps à une date. TalendDate.addDate(date, -1, "dd") \(\rightarrow\) Date de la veille
diffDate(date1, date2, unit) Calcule l'écart entre deux dates (date1 - date2). TalendDate.diffDate(now, naissance, "yyyy") \(\rightarrow\) Âge en années
isDate(stringDate, pattern) Vérifie si une chaîne respecte le format (renvoie un booléen). TalendDate.isDate("2026-02-30", "yyyy-MM-dd") \(\rightarrow\) false

2. Les motifs de formatage (Patterns)#

Talend respecte scrupuleusement la nomenclature de la classe standard Java java.text.SimpleDateFormat.

[!CAUTION] Attention à la casse des lettres dans vos motifs : - MM (Majuscules) désigne le Mois (ex. : 03). - mm (Minuscules) désigne les Minutes (ex. : 45). - HH (Majuscules) désigne les heures au format 24 heures (00 à 23). - hh (Minuscules) désigne les heures au format 12 heures (01 à 12). - yyyy désigne l'année sur 4 chiffres.

Exemples de patterns fréquents
"yyyy-MM-dd"                  -> 2026-03-15
"dd/MM/yyyy"                  -> 15/03/2026
"yyyyMMdd_HHmmss"             -> 20260315_143022
"EEEE dd MMMM yyyy"           -> dimanche 15 mars 2026
"w"                           -> Numéro de semaine dans l'année (1 à 52)

3. Cas d'usage réels en entreprise#

1. Calculer la date de la veille (Traitement à J-1)#

Dans les traitements batchs nocturnes exécutés à 02h00 du matin, on souhaite extraire les ventes réalisées la journée précédente :

// Obtient la date d'hier au format ISO pour injecter dans une clause SQL WHERE
String dateHier = TalendDate.formatDate(
    "yyyy-MM-dd", 
    TalendDate.addDate(TalendDate.getCurrentDate(), -1, "dd")
);

2. Générer des chemins de fichiers d'export dynamiques horodatés#

Pour éviter d'écraser vos rapports quotidiens :

// Construit un chemin réseau unique avec date et heure
String cheminExport = "//serveur-nas/partage/export_ventes_" 
    + TalendDate.formatDate("yyyyMMdd_HHmm", TalendDate.getCurrentDate()) 
    + ".xlsx";

3. Parsing sécurisé de dates nulles ou invalides dans tMap#

Si votre fichier source CSV contient des champs vides ou des dates corrompues, un simple TalendDate.parseDate() fera planter tout le job avec une exception ParseException.

Voici l'expression ternaire recommandée à placer dans votre colonne de sortie tMap :

Expression sécurisée dans tMap
Relational.ISNULL(row1.date_texte) || row1.date_texte.trim().isEmpty() 
    ? null 
    : TalendDate.parseDate("dd/MM/yyyy", row1.date_texte.trim())

4. Calcul de l'âge d'un client#

// Calcule la différence en années complètes entre aujourd'hui et la date de naissance
int age = (int) TalendDate.diffDate(
    TalendDate.getCurrentDate(), 
    row1.date_naissance, 
    "yyyy"
);

Vous maîtrisez désormais le temps dans Talend. Dans la prochaine leçon, nous allons apprendre à exporter nos jobs sous forme d'archives autonomes pour les exécuter sur un serveur de production !

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue