Personnalisation des dates et heures

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.

blank

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é.

 

Roland Lannuzel
- Product Owner & 4D Expert - Après avoir étudié l'électronique, Roland s'est lancé dans l'informatique industrielle en tant que développeur et consultant, créant des solutions pour les clients avec une variété de bases de données et de technologies. À la fin des années 80, il est tombé amoureux de 4D et l'a utilisé pour écrire des applications commerciales, notamment des systèmes de comptabilité, de facturation et de messagerie électronique. Il a rejoint la société en 1997 et a contribué à la conception de spécifications, d'outils de test et de démonstrations, ainsi qu'à la formation et à la présentation de la communauté 4D lors de nombreuses conférences. Il continue à façonner activement l'avenir de 4D en définissant de nouvelles fonctionnalités et des outils de développement de bases de données.