Fonctions Date/heure

Utiliser les fonctions suivantes pour analyser, formater et manipuler les valeurs de date, d'heure et de dateheure partout dans FME où les expressions sont prises en charge. Sauf indication contraire, les arguments temporels (date, heure, dateheure) doivent être en Formats standards FME d'heure et de date ou au format date et heure ISO 8601.

Pour le support arithmétique, voir aussi DateTimeCalculator dans l'aide des Transformers de FME Workbench.

Note: Les espaces dans les fonctions date/heure sont automatiquement coupées en début et fin de chaîne.

Lorsqu'un argument temporel est traité, si l'année, le mois, le jour, les heures, les minutes et/ou les secondes sont en dehors de la plage prise en charge, l'argument est rejeté et le résultat est défini comme nul. @DateTimeParse est la seule fonction date/heure qui dispose d'un argument facultatif pour réparer les parties qui dépassent les plages prises en charge (sauf pour les années). Par exemple, @DateTimeParse(20161332,%Y%m%d,repair) réparera la date d'entrée en 20170201.

Conseil  Utiliser @DateTimeParse pour réparer les intervalles de secondes et autres valeurs temporelles contenant des parties qui dépassent des plages telles que les valeur de date/heure générées par des capteurs ou autres dispositifs mécaniques.

Fonctions Date/heure

Fonction Description Exemples

@DateTimeAdd()

DateHeure + Intervalle = Date heure

@DateTimeAdd(20170102, P1M) = 20170202

@DateTimeAdd(20170102, -P1M) = 20161202

@DateTimeCast()

Change le type source en un type destination, si la conversion est enregistrée.

Un troisième argument optionnel spécifie le type de changement de format de l'opération. Voir @DateTimeCast pour plus de détails.

@DateTimeCast(20170102123000-08, time) = 123000-08:00

@DateTimeCast(20170132, date) = null

@DateTimeCast(20170001, date) = null

@DateTimeCast(20180821, time, exact_match) = null

@DateTimeCast(120000+08:00, time_offset, strict_offset) = 120000+08:00

@DateTimeCast(120000, time_offset, strict_offset) = null

@DateTimeCreate()

Crée une chaîne de date/heure sans fuseau horaire ni décalage UTC.

@DateTimeCreate(2017,1,2,12,30,0,-08) = 20170102123000-08:00

@DateTimeDiff()

Datetime – Datetime = Intervalle

@DateTimeDiff(20170201,20170101) = P1M

@DateTimeDiff(20170202, 20170201, seconds) = 86400

@DateTimeFormat()

Formatte les chaînes date/heure FME pour qu'elles puissent être exploitées par des Writers ou Transformers.

@DateTimeFormat(20170102,%B %d %Y) = January 02 2017

@DateTimeIntervalCreate()

Crée des chaînes Intervalles sousla norme ISO 8601 de format de durée.

@DateTimeIntervalCreate(1,0,0,0,0,0) = P1Y

@DateTimeIntervalNegate()

Ignorer les Intervalles

@DateTimeIntervalNegate(P1Y) = -P1Y

@DateTimeNow()

Crée des valeurs d'horodatage en heure locale, local sans fuseau ou en heure UTC.

@DateTimeNow() = 20170203170000.1234567

@DateTimeNow(localUnzoned) = 20170203170000.1234567

@DateTimeNow(local) = 20170203170000.1234567-08:00

@DateTimeNow(utc) = 20170204010000.1234567+00:00

@DateTimeParse()

Analyse arbitraire de chaînes contenant des informations date/heure dans des chaînes au format FME.

Peut être utilisé pour la validation et la réparation. Peut analyser les secondes intercalaires en reportant la seconde supplémentaire de manière à ce que toutes les parties soient dans la plage.

@DateTimeParse(January 2 2017, %B %d %Y) = 20170102

@DateTimeParse(20170229,%Y%m%d,repair) = 20170301

@DateTimeRound()

Arrondit une chaîne de date à un intervalle donné.

@DateTimeRound(20170203170000.1234567, down, seconds, 1) = 20170203170000

@DateTimeRound(20170203170000.1234567, up, seconds, 5) = 20170203170005

@TimeZoneGet

Récupère le décalage UTC de valeurs date-heure zonées.

@TimeZoneGet(083000-08) = -08:00

@TimeZoneRemove

Supprime le décalage UTC de valeurs date-heure zonées.

@TimeZoneRemove(083000-08) = 083000

@TimeZoneSet

Définit un fuseau horaire (décalage UTC) en date-heure non-zonée ou convertit une date-heure zonée en un autre fuseau horaire.

@TimeZoneSet(083000-01:00, -08:00) = 013000-08:00

@TimeZoneSet(083000, -08:00) = 083000-08:00

@TimeZoneSet(083000-01:00, local) = 013000-08:00

@TimeZoneSet(083000-01:00, utc) = 093000+00:00

Description détaillées des fonctions Date/Heure

Fonctions de construction Dat/heure

Fonctions arithmétiques Date/heure

Fonctions Date/Time Timezone

Fonctions Date/Time Parse/Format

Paramètres et Exemples de Chaîne de Formatage

Méthode

Paramètres

Signification

@DateTimeParse

@DateTimeFormat

Année

%Y

Année à quatre chiffres, comprise entre 0001 et 9999.

@DateTimeParse(2017-01-02, %Y-%m-%d) = 20170102

@DateTimeFormat(20170102, %Y-%m-%d) = 2017-01-02

%y####

Année à deux chiffres où #### est la plus grande année (quatre chiffres) à considérer.

Par exemple, si %y2059 est spécifié, les années à deux chiffre 00-59 sont lues comme 2000-2059, tandis que 60-99 sont lues comme 1960-1999.

@DateTimeParse(17-01-02, %y2020-%m-%d) = 20170102

@DateTimeParse(17-01-02, %y2010-%m-%d) = 19170102

@DateTimeParse(17-01-02, %y2017-%m-%d) = 20170102

Non-supporté.

%y

Année à deux chiffres.

Non-supporté.

@DateTimeFormat(20170102, %y-%m-%d) = 17-01-02

Mois

%m

Mois à deux chiffres, compris entre 01 et 12.

Mois à un chiffre acceptés si séparés par des délimiteurs.

@DateTimeParse(2017-1-2, %Y-%m-%d) = 20170102

@DateTimeFormat(20170102, %Y-%m-%d) = 2017-01-02

%N

Same as %m except as noted.

@DateTimeParse(1/2/2017,%N/%e/%Y) = 20170102

Identique à %m, sauf les zéros en premiers supprimés.

@DateTimeFormat(20170102,%N/%e/%Y) = 1/2/2017

%b

Mois de l'année abrégé, trois lettres, en anglais.

@DateTimeParse(Jan 2 2017,%b %d %Y) = 20170102

@DateTimeFormat(20170102, %b %d %Y) = Jan 02 2017

%B

 

@DateTimeParse(January 2 2017,%B %d %Y) = 20170102

@DateTimeFormat(20170102, %B %d %Y) = January 02 2017

Semaine

%a

Jours de la semaine, abrégés en 3 lettres.

Non supporté. Envisagez l'analyse syntaxique en utilisant *.

@DateTimeFormat(20170102, %a %b %d %Y) = Mon Jan 02 2017

%A

Nom complet des jours de la semaine.

Non supporté. Envisagez l'analyse syntaxique en utilisant *.

@DateTimeFormat(20170102, %A %B %d %Y) = Monday January 02 2017

%u

Jour de la semaine en un seul chiffre, compris entre 1 et 7 (Lundi étant 1).

Non-supporté.

@DateTimeFormat(20170102, %u) = 1

%U

Semaine de l'année en deux chiffres, compris entre 00 et 53, commençant avec le premier dimanche en tant que premier jour de l'année 1.

Non-supporté.

@DateTimeFormat(20160102, %U) = 00

@DateTimeFormat(20160103, %U) = 01

@DateTimeFormat(20171231, %U) = 53

%w

Jour de la semaine en un seul chiffre compris entre 0 et 6 (Dimanche étant 0).

Non-supporté.

@DateTimeFormat(20170101, %w) = 0

%W

Semaine de l'année en deux chiffres, compris entre 00 et 53, commençant avec le premier lundi de la semaine 1.

Non-supporté.

@DateTimeFormat(20160103, %W) = 00

@DateTimeFormat(20160104, %W) = 01

@DateTimeFormat(20181231, %W) = 53

Jour

%d

Jour du mois en deux chiffres, compris entre 01 et le dernier jour du mois.

Jour en un chiffre accepté si séparé par des délimiteurs.

@DateTimeParse(2017-1-2, %Y-%m-%d) = 20170102

@DateTimeFormat(20170102, %Y-%m-%d) = 2017-01-02

%e

Identique à %d sauf si exception notée.

@DateTimeParse(1/2/2017,%N/%e/%Y) = 20170102

Identique à %d à l'exception des zéros en amont supprimés.

@DateTimeFormat(20170102,%N/%e/%Y) = 1/2/2017

%j

Jour de l'année en trois chiffres, compris entre 001 et 365 (année non-bissextile) ou 366 (année bissextile).

Jours de l'année à 1 et 2 chiffres acceptés.

@DateTimeParse(20171,%Y%j) = 20170101

@DateTimeFormat(20170101,%Y-%j) = 2017-001

@DateTimeFormat(20161231,%Y-%j) = 2016-366

Heures

%H

Heures en deux chiffres, compris entre 00 et 23.

Heures à un chiffre acceptées si séparées par des délimiteurs.

@DateTimeParse(8:30, %H:%M) = 083000

@DateTimeFormat(083000, %H:%M:%S) = 08:30:00

%k

Identique à %H sauf si exception notée.

@DateTimeParse(8:30, %k:%M) = 083000

Identique à %H à l'exception des zéros en amont supprimés.

@DateTimeFormat(083000, %k:%M%p) = 8:30AM

%I (i)

Horloge à 12 heures, compris de 0 à 12.

Heures à un chiffre acceptées si séparées par des délimiteurs.

@DateTimeParse(8:30PM, %I:%M%p) = 203000

@DateTimeFormat(203000, %I:%M %p) = 08:30PM

%l (L)

Identique à %l sauf si exception notée.

@DateTimeParse(8:30PM, %l:%M%p) = 203000

Identique à %l à l'exception des zéros en amont supprimés.

@DateTimeFormat(203000, %l:%M%p) = 8:30PM

%p

AM/PM

AM/PM acceptés, insensibles à la casse.

@DateTimeParse(12:30am, %I:%M%p) = 003000

@DateTimeFormat(083000, %I:%M %p) = 08:30 AM

Minutes

%M

Minutes à deux chiffres, compris entre 00 et 59.

Minutes à un chiffre acceptées si séparées par des délimiteurs.

@DateTimeParse(8:30, %H:%M) = 083000

@DateTimeFormat(083000, %H:%M:%S) = 08:30:00

Secondes

%S

Secondes à deux chiffres, avec une plage de 00 à 59. Les fractions de seconde sont prises en charge jusqu'à une résolution de l'ordre de la nanoseconde.

Secondes à un chiffre acceptées si séparées par délimiteurs.

@DateTimeParse(8:30:01.234, %H:%M:%S) = 083001.234

@DateTimeFormat(083059.123, %H:%M:%S) = 08:30:59.123

%s

Secondes depuis l'heure de l'Epoch Unix (1970-01-01 00:00:00+00:00). Les fractions de secondes sont supportées jusqu'à une résolution de l'ordre de la nanoseconde.

La chaîne de formatage est rejetée si %z et %s sont tous deux présents.

Accepte le temps d'epoch. Donne une dateheure UTC.

La partie secondes doit comporter au moins un seul chiffre. Par exemple, "0,1" est considéré comme une valeur valide pour %s, mais ".1" ne l'est pas.

@DateTimeParse(1.234, %s) = 19700101000001.234+00:00

@DateTimeParse(1.234-08:00, %s%z) = null

Accepte une dateheure zonée. Produit une heure epoch.

@DateTimeFormat( 19700101000001.234+00:00, %s) = 1.234

@DateTimeFormat( 19700101000001.234, %s) = null

@DateTimeFormat( 19700101000001.234+00:00, %s%z) = null

%Es

Identique à %s, sauf que ce paramètre supporte les dates et date-heures non-zonées.

La chaîne de formatage est rejetée si %z et %Es sont tous deux présents.

Accepte l'heure epoch. Produit une dateheure UTC, mais sans le décalage UTC. La sortie n'est donc pas zonée.

@DateTimeParse(1.234, %Es) = 19700101000001.234

@DateTimeParse(1.234, %Es%z) = null

Accepte une date ou une dateheure non zonée et la traite comme une heure UTC. Donne une heure epoch.

@DateTimeFormat( 19700101000001.234, %Es) = 1.234

@DateTimeFormat(19700102, %Es) = 86400

@DateTimeFormat( 19700101000001.234+00:00, %Es) = null

@DateTimeFormat(19700101000001.234, %Es%z) = null

Fuseau horaire

%z

Décalage UTC sous la forme +/-hh:mm, sauf si exception notée.

Décalage UTC sous la forme +/-hh, +/-hhmm, ou +/-hh:mm, ou Z for heure Zulu qui est +00:00.

@DateTimeParse(8:30-08,%H:%M%z) = 083000-08:00

@DateTimeFormat(000000-08:00,%T%z) = 00:00:00-08:00

%Ez

Identique à %z sauf si exception notée.

@DateTimeParse(03:04:05Z,%H:%M:%S%Ez) = 030405+00:00

Identique à %Ez, sauf que +00:00 sort en tant que  Z pour heure  Zulu.

@DateTimeFormat(030405+00:00,%T%Ez)=03:04:05Z

Raccourcis

%T

Egal à %H:%M:%S

@DateTimeParse(03:04:05,%T) = 030405

@DateTimeFormat(000000,%T) = 00:00:00

FME

Auto-parse l'entrée qui est au Formats standards FME d'heure et de date et répare les parties dépassant si l'argument réparation est défini.

Spécifiquement, @DateTimeParse() recherche les correspondances suivantes :

  • %Y%m%d$
  • %H%M%S$
  • %H%M%S%Ez$
  • %Y%m%d%H%M%S$
  • %Y%m%d%H%M%S%Ez$

Peut être combiné avec le paramètre ISO séparé avec le caractère | (barre verticale).

Pour rendre ce raccourci moins ambigu depuis une chaîne de texte avec le même contenu, quand FME et ISO sont spécifiés, il ne doit y avoir aucun autre paramètre présent.

@DateTimeParse(030460-0800, FME, repair) = 030500-08:00

@DateTimeParse(030460-0800, FME|ISO, repair) = 030500-08:00

@DateTimeFormat(083000-08, FME) = 083000-08:00

@DateTimeFormat(20170229, FME) = null

ISO

Auto-parse/formate l'entrée en format date-heure ISO.

Spécifiquement, @DateTimeParse() recherche les correspondances suivantes :

  • %Y-%m-%d$
  • %H:%M:%S$
  • %H:%M:%S%Ez$
  • %Y-%m-%dT%H:%M:%S$
  • %Y-%m-%dT%H:%M:%S%Ez$

Pour rendre ce raccourci moins ambigu depuis une chaîne de texte avec le même contenu, quand ISO est spécifié, il ne doit y avoir aucun autre paramètre présent.

@DateTimeParse(2017-01-02, FME | ISO) = 20170102

@DateTimeParse(03:04:60,ISO,repair) = 030500

@DateTimeFormat(20170102, ISO) = 2017-01-02

@DateTimeFormat(20170102030405-08,ISO) = 2017-01-02T03:04:05-08:00

Métacaractère

*

Un simple mot qui correspond à une séquence de caractères délimités par des espaces blancs ou le début/la fin d'une chaîne, ou le caractère suivant immédiatement le caractère * suivant.

Par exemple, "Lundi" peut être interpréter soit "*" ou "*,".

Les caractères suivants sont des caractères spéciaux qui peuvent suivre le * :

Séquence Description

**

Rejette l'entrée.

*?

Rejette l'entrée.

*$

$ est traité comme la fin de la chaîne.

*%

Continuer l'analyse. Tous les marqueurs % sauf ceux ci-dessous sont rejetés.

*%%

Mot qui fini avec %

*%*

Mot qui fini avec *

*%?

Mot qui fini avec ?

*%$

Mot qui fini avec $

@DateTimeParse("On Monday, January 23 2017","* * %B %d %Y") = 20170123

@DateTimeParse("On Monday, January 23 2017","* *, %B %d %Y") = 20170123

Non-supporté.

?

Un caractère unique.

@DateTimeParse(January 23rd 2017,%B %d?? %Y) = 20170123

@DateTimeParse(LC80460262015110LGN00, LC???????%Y%jLGN??) = 20150420

Non-supporté.

$

Fin de la chaîne d'entrée. Utilisé pour s'assurer que l'entrée correspond entièrement à la chaîne de format.

Les chaînes en entrée sont automatiquement tronquées d'espaces de début et de fin.

@DateTimeParse(2017-01-02, %Y-%m-%d$) = 20170102

@DateTimeParse(2017-01-02 and then, %Y-%m-%d$) = null

Non-supporté.

Caractères spéciaux

%%

Le caractère %.

@DateTimeParse(2017%01%05,%Y%%%m%%%d) = 20170105

@DateTimeFormat(020304,%T %%) = 02:03:04 %

%*

Le caractère *.

@DateTimeParse(*** 2017-01-05,%*%*%* %Y-%m-%d) = 20170105

Non-supporté.

%?

Le caractère  ?

@DateTimeParse(On Jan 2 2017?,* %b %d %Y%?) = 20170102

Non-supporté.

%$

Le caractère $

@DateTimeParse(2017$01$02,%Y%$%m%$%d) = 20170102

Non-supporté.

Caractère régulier

Tout

Tout caractère qui n'est pas un joker ou un caractère spécial tel que documenté ci-dessus est considéré comme un caractère ordinaire. La sensibilité à la casse est respectée.

@DateTimeParse(On Jan 23 2017, On %b %d %Y) = 20170123

@DateTimeParse(On Jan 23 2017, on %b %d %Y) = null

@DateTimeFormat(20170102,On %B %d %Y) = On January 02 2017

Voir aussi

DateTimeCalculator

DateTimeConverter

DateTimeStamper

Formats standards FME d'heure et de date