La manipulation des dates et des heures nécessite souvent un formatage spécifique pour diverses représentations basées sur les ressources internes de 4D ou les paramètres du système d’exploitation.
Bien que les formats par défaut soient généralement suffisants, il existe des scénarios dans lesquels un formatage personnalisé est essentiel, en particulier pour des emplacements géographiques différents ou des exigences uniques. Dans 4D v20 R4, des avancées significatives ont été réalisées pour répondre à ce besoin précis.
HDI
Quels sont les avantages ?
Comme indiqué dans l’introduction, le nombre d’options de formatage est limité. Si vous souhaitez rédiger un document pour une destination autre que le pays dans lequel il a été créé, les formats disponibles ne seront probablement pas ceux souhaités par le destinataire. Il est donc essentiel de définir, à la virgule près, la manière dont les dates et les heures seront affichées au final.
De plus, de nouvelles possibilités sont offertes, comme les numéros de semaine ou de trimestre ou encore le jour de l’année !
FORMATAGE OU TRANSFORMATION ?
Il existe deux manières très différentes de formater les heures et les dates.
La première consiste à définir un mode d’affichage dans un formulaire. Dans ce cas, une date reste une date. Elle peut même être affichée plusieurs fois, mais de manière différente, sur un même formulaire ou document.
La seconde consiste à transformer une date en chaîne de caractères à l’aide de la fonction String.
Dans les deux cas, vous devez définir une chaîne de formatage pour décrire le résultat souhaité.
Une chaîne de formatage courante
Qu’il s’agisse de l’affichage (mise en forme simple) ou de la création d’une chaîne via la fonction String, le paramètre nécessaire (également une chaîne) sera commun aux deux utilisations.
« EEEE dd/MM/yyyy », « QQQQ » ou « HH:mm : ss » ?
C’est la partie la plus intéressante, qui ouvre des possibilités presque infinies. Non seulement vous pouvez décider de l’ordre des éléments et de la manière de les présenter, mais d’autres informations auparavant inaccessibles – tout au moins d’une manière aussi simple – peuvent être révélées.
La documentation détaille la définition et le résultat obtenu par chaque lettre ou combinaison de lettres, mais permettez-moi de vous donner quelques exemples de dates…
15/06/2000 -> « QQQQ » -> « 2nd quarter » (localisé dans votre langue comme « 2è trimestre » en français !)
17/03/2001 -> « D » -> « 76 » (76ème jour de l’année, 77ème pour les années bissextiles)
17/03/1954 -> « w » -> « 11 » (11ème semaine de l’année – qui varie selon les années !)
17/03/1954 -> « eeee » -> « Wednesday » ((Vous pouvez vérifier que c’était un mercredi 🙂 (Egalement localisé)
Quelques exemples avec les heures
15:00:00 -> « a » -> « PM »
18:00:00 -> « K » -> « 6 »
13:30:15 -> « hh:mm aa O » -> 01:30 PM GMT+1
Enfin, la chaîne de formatage peut également contenir des caractères qui, s’ils sont compris entre « a » et « z » ou « A et « Z », doivent être placés entre guillemets simples pour ne pas être interprétés comme des caractères de formatage.
15:30:00 -> « HH ‘heures et’ mm ‘minutes' » -> « 15 heures et 30 minutes »
La commande « String
La commande « String » a été modifiée pour accepter une chaîne formatée comme 2ème paramètre, en plus des constantes numériques (telles que System date short) qui peuvent toujours être utilisées.
Rappel : la commande String peut accepter une date et une heure optionnelle !
String ( expression {; format {; addTime}} ) -> Function result
On peut donc maintenant formater des dates et des heures en toute liberté, et même les deux en même temps !
$date:=!1954-03-17!
$time:=?13:24:35?
$format:="EEEE dd MMMM yyyy 'à' HH 'heures,' mm 'minutes et' ss 'secondes'"
$result:=string($date;$format;$time)
Le résultat sera « mercredi 17 mars 1954 à 13 heures, 24 minutes et 35 secondes » sur un système français !
La commande « object set format
Basée sur le même principe, cette commande permet de définir par programmation le format des dates et heures affichées dans les formulaires. La syntaxe est exactement la même, comme le montre l’exemple ci-dessous :
OBJECT SET FORMAT(*; "myDate"; "(yyyy) MMM dd") // (2017) Dec 12
OBJECT SET FORMAT(*; "mytime"; "hh'h' mm'mn' ss'sec.'") // 15h 12mn 17sec.
Et enfin, l’interface !
Bien entendu, tout ce qui est programmé via la commande OBJECT SET FORMAT peut être fait directement dans les formulaires. La liste des formats possibles pour les dates et les heures comporte désormais une ligne « personnalisée » permettant d’introduire la chaîne de formatage souhaitée. Bien entendu, cette chaîne est construite de la même manière que les commandes énumérées ci-dessus.
Nouveau modèle de saisie lorsque le format de la date est défini sur Personnalisé
Conclusion
En résumé, cette nouvelle fonctionnalité vous offre une grande liberté dans l’affichage des dates et des heures. La simplification du code de vos applications réduira le temps de développement et permettra une meilleure optimisation des formulaires. Consultez la documentation pour plus de détails sur cette fonctionnalité.