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). -yyyydésigne l'année sur 4 chiffres.
"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 :
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