Routines de type TalendDate
Les routines TalendDate contiennent plusieurs fonctions qui vous permettent d'effectuer différents types d'opération et de vérification sur le format des expressions de type Date.
Vous pouvez accéder à ces fonctions en double-cliquant sur le nœud TalendDate dans le dossier des routines système dans la vue Repository.
Fonction |
Description |
Syntax (Syntaxe) |
---|---|---|
addDate |
Ajoute n jours, n mois, n heures, n minutes ou n secondes à une Date Java et retourne la nouvelle date. Le paramètre de format de données Date est : yyyy, MM, dd, HH, mm, ss ou SSS. |
TalendDate.addDate("Chaîne de date initiale", "format de date - ex : yyyy/MM/dd", entier n,"format de la date à ajouter - ex : yyyy"). |
compareDate |
Compare tout ou partie de deux dates, selon le modèle de date si spécifié. Retourne 0 si les dates sont identiques, -1 si la première date est antérieure et 1 si la deuxième est antérieure. Le paramètre pattern définit le format de date, par exemple "yyyy-mm-dd". |
TalendDate.compareDate(Date date1, Date date2,[String pattern]) |
diffDate |
Retourne la différence entre deux dates, en nombre d'années, mois, jours, heures, minutes, secondes ou millisecondes selon le paramètre de comparaison spécifié. Le paramètre dateType définit le format de la partie de date à comparer. Les valeurs valides sont les suivantes : "yyyy", "MM", "dd", "HH", "mm", "ss", "SSS". La valeur par défaut est "dd". Le paramètre ignoreDST spécifie s'il faut prendre en compte le changement d'heure (DST) ou non. |
TalendDate.diffDate(Date date1, Date date2,[String dateType],[boolean ignoreDST]) Par exemple, TalendDate.diffDate(TalendDate.parseDate("yyyy-MM-dd", "2022-12-01"), TalendDate.parseDate("yyyy-MM-dd", "2022-10-02"), "MM") retourne 2. |
diffDateFloor |
Retourne la différence entre deux dates, en nombre d'années ou mois selon le paramètre de comparaison spécifié. La valeur est arrondie vers l'entier inférieur le plus proche. Le paramètre dateType spécifie la partie de la date à comparer. Les valeurs valides sont les suivantes : "yyyy", "MM". |
TalendDate.diffDateFloor(Date date1, Date date2, String dateType) Par exemple, TalendDate.diffDateFloor(TalendDate.parseDate("yyyy-MM-dd", "2022-12-01"), TalendDate.parseDate("yyyy-MM-dd", "2022-10-02"), "MM") retourne 1. |
diffDateIgnoreDST |
Retourne la différence entre deux dates, en nombre de jours, mois ou années selon le paramètre de comparaison défini, et sans prendre en compte le changement à l'heure d'été (DST). Le paramètre dateType définit le format de la date à comparer, par exemple "yyyy". |
TalendDate.diffDateIgnoreDST(Date1(), Date2(),[String dateType]) |
formatDate |
Retourne une expression de type date formatée selon le modèle de date spécifié. |
TalendDate.formatDate("format de date - ex : yyyy-MM-dd HH:mm:ss ", Date() à formater) |
formatDateInTimeZone |
Formate une date au format défini de date/heure correspondant au fuseau horaire donné. |
TalendDate.formatDateInTimeZone(String datePattern, Date tate, String TimeZoneID) |
formatDateInUTC |
Formate une date au format spécifié de date/heure correspondant au temps universel coordonné (UTC). |
TalendDate.formatDateInTimeZone(String datePattern, Date tate, String TimeZoneID) |
formatDateLocale |
Transforme une date en une chaîne de caractères de type date/heure selon le format utilisé dans le pays cible. |
TalendDate.formatDateLocale("format cible", java.util.Date date, "code de la langue ou du pays") |
formatDatetimeoffset |
Formate la date en chaîne datetimeoffset ISO 8601 de type MSSQL 2008 avec une chaîne au format du fuseau horaire local : yyyy-MM-dd HH:mm:ss.SSSXXX (supporté par JDK 7). |
TalendDate.formatDatetimeoffset(Date date) |
getCurrentDate |
Retourne la date courante. Aucun paramètre d'entrée n'est attendu. |
TalendDate.getCurrentDate() |
getDate |
Retourne les date et heure courantes dans le format spécifié (optionnel). Cette chaîne peut contenir des chaînes de caractères fixes, ou des variables liées à la date. Par défaut, le format de la chaîne de caractères attendu est DD/MM/CCYY. |
TalendDate.getDate("Format of the string - ex: CCYY-MM-DD") |
getFirstDayOfMonth |
Change le jour d'une date en premier jour du mois courant et retourne la nouvelle date. |
TalendDate.getFirstDayMonth(Date) |
getLastDayOf Month |
Change le jour d'une date en dernier jour du mois courant et retourne la nouvelle date. |
TalendDate.getLastDayMonth(Date) |
getPartOfDate |
Retourne une partie d'une date dans le format spécifié. Cette chaîne peut contenir des chaînes de caractères fixes, ou des variables liées à la date. |
TalendDate.getPartOfDate("Chaîne de caractères indiquant la partie de la date à récupérer", "Chaîne de caractères au format date à parser") |
getRandomDate |
Retourne une date aléatoire, au format ISO. |
TalendDate.getRandomDate("Chaîne de caractères de type Date, de ", String maxDate) |
isDate |
Vérifie si l'expression est de type Date et correspond au modèle spécifié. Retourne le booléen true si c'est le cas, et false dans le cas inverse. |
TalendDate.isDate(Date() à vérifier, chaîne de caractères pattern, [boolean ignoreTimeZone]) où pattern spécifie le format de la date à vérifier. Par exemple yyyy-MM-dd HH:mm:ss. |
isDateStrict |
Teste la valeur d'une chaîne de caractères en tant que date au format correct selon des règles strictes. Cette validation utilise des outils de temps Java 8. La gamme d'offsets de fuseau horaire est restreinte de -18:00 à 18:00 inclus. Retourne une valeur booléenne qui indique si stringDate est une chaîne de date suivant le modèle correct. |
TalendDate.isDateStrict(String stringDate, String pattern) |
parseDate |
Transforme une chaîne de caractères en Date. Retourne une date au format défini. |
TalendDate.parseDate("format date de la chaîne à parser", "chaîne de caractères au format date à parser",["booléen indiquant si le parsing est Lenient, c'est-à-dire, qu'il accepte la correspondance heuristique avec le format"]) |
parseDateInUTC |
modifie une chaîne de caractères en une Date UTC. Retourne une date au format UTC. Dans un Job Big Data s'exécutant dans un environnement de production, comme plusieurs machines dans différents fuseaux horaires sont utilisées, vous devez toujours utiliser cette routine afin de garantir une sortie correcte du parsing de l'heure et de la date. |
TalendDate.parseDateInUTC("format date de la chaîne à parser", "chaîne de caractères au format date à parser",["booléen indiquant si le parsing est Lenient, c'est-à-dire accepte la correspondance heuristique avec le format"]) |
parseDateLocale |
Parse une chaîne de caractères selon un format spécifié et en extrait la date. Retourne une date formatée selon la locale spécifiée. |
TalendDate.parseDateLocale("format date de la chaîne à parser", "Chaîne de caractères au format date à parser", "code de la langue ou du pays") |
setDate |
Modifie une partie de la date en entrée par un entier spécifié et basé sur le format spécifié. |
TalendDate.setDate(Date, entier n, "format de la donnée à changer - ex :yyyy") |
TO_CHAR |
Convertit une date en une chaîne de caractères. |
TalendDate.TO_CHAR(date[,format])
|
TO_DATE |
Convertit une chaîne de caractères en un type Date/Time. |
TalendDate.TO_DATE(string[, format])
Par exemple, TalendDate.TO_DATE("04/24/2017 13:55:42.123") retourne Mon Apr 24 13:55:42 CST 2017. |
ADD_TO_DATE |
Ajoute une somme spécifiée à une partie d'une valeur datetime et retourne une date au même format que la date passée à la fonction. |
TalendDate.ADD_TO_DATE(date, format, amount)
Par exemple : si TalendDate.getCurrentDate() retourne Mon Apr 24 14:26:03 CST 2017, TalendDate.ADD_TO_DATE(TalendDate.getCurrentDate(), "YY", 1) va retourner Tue Apr 24 14:26:03 CST 2018. |
Dans un format de date, "yyyy" et "YYYY" retournent la même année dans la plupart des cas. Cependant, "YYYY" peut ne pas fonctionner comme attendu :
- Cependant, il est possible que le format "YYYY" ne fonctionne pas comme attendu, lorsqu'il est utilisé :
- pour la première semaine de l'année, si l'année ne commence pas par le premier jour de la semaine ;
Par exemple, lorsque vous calculez le jour venant trois jours avant le 2 janvier 2016, le code ci-dessous retourne une date incorrecte :
System.out.println(TalendDate.formatDate("YYYY-MM-dd", TalendDate.addDate(TalendDate.TO_DATE("01/02/2016 08:10:30.123"), -3, "dd")));
alors que ce code-ci retourne la date attendue :
System.out.println(TalendDate.formatDate("yyyy-MM-dd", TalendDate.addDate(TalendDate.TO_DATE("01/02/2016 08:10:30.123"), -3, "dd")));
Il est donc recommandé d'utiliser "yyyy", qui représente les années calendaires.
Exemple de formatage d'une Date
Vous pouvez tester simplement la routine formatDate, à l'aide d'un composant tJava par exemple, pour vérifier qu'une expression de type date est dans le format spécifié :
System.out.println(TalendDate.formatDate("dd-MM-yyyy", new Date()));
La date du jour est instanciée par la fonction Java new Date()et s'affiche dans la vue Run :
Exemple de vérification d'une Date
Vous pouvez tester simplement la routine isDate, à l'aide d'un composant tJava par exemple, pour vérifier qu'une expression de type date est dans le format spécifié :
System.out.println(TalendDate.isDate("2010-02-09 00:00:00",
"yyyy-MM-dd HH:mm:ss"));
Un booléen s'affiche dans la vue Run :
Exemple de comparaison de Dates
- -1 : la première date est antérieure à la seconde.
- 0 : la première date est identique à la seconde.
- -1 : la première date est postérieure à la seconde.
Voici un exemple d'utilisation de cette routine.
System.out.println(TalendDate.compareDate(TalendDate.parseDate("yyyy-MM-dd", "2015/11/24"), TalendDate.parseDate("yyyy-MM-dd", "2025/11/24")));
Cet exemple compare deux dates : 2015/11/24et 2025/11/24 et retourne la valeur -1 dans la vue Run, indiquant que la première date est antérieure à la seconde.
Exemple de configuration de Date
System.out.println(TalendDate.formatDate("yyyy/MM/dd HH:mm:ss",new Date()));
System.out.println(TalendDate.setDate(new Date(),2011,"yyyy"));
La date courante suivie de la nouvelle date configurée s'affiche dans la vue Run :
Exemple de parsage de Date
System.out.println(TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",
"1979/10/20 19:00:59"));
La chaîne de caractères est transformée en Date et la date est retournée :
Exemple de récupération d'une partie d'une Date
Vous pouvez tester simplement la routine getPartOfDate, à l'aide d'un composant tJava, pour récupérer une partie d'une date, par exemple :
Date D=TalendDate.parseDate("dd-MM-yyyy HH:mm:ss", "13-10-2010 12:23:45");
System.out.println(D.toString());
System.out.println(TalendDate.getPartOfDate("DAY_OF_MONTH", D));
System.out.println(TalendDate.getPartOfDate("MONTH", D));
System.out.println(TalendDate.getPartOfDate("YEAR", D));
System.out.println(TalendDate.getPartOfDate("DAY_OF_YEAR", D));
System.out.println(TalendDate.getPartOfDate("DAY_OF_WEEK", D));
Dans cet exemple, sont retournés dans la vue Run le jour du mois (DAY_OF_MONTH), le mois (MONTH), l'année (YEAR), le numéro de jour de l'année (DAY_OF_YEAR) et le numéro de jour de la semaine (DAY_OF_WEEK). Toutes les données retournées sont de type numérique.
Exemple de formatage de la Date courante
Vous pouvez tester simplement la routine getDate, à l'aide d'un composant tJava, pour récupérer la date courante et la formater selon un modèle spécifié, par exemple :
System.out.println(TalendDate.getDate("CCYY-MM-DD"));
La date courante est retournée selon le format spécifié (optionnel) :