Maßgeschneiderte Anpassung für Daten und Zeiten

Die Bearbeitung von Datums- und Zeitangaben erfordert oft eine spezifische Formatierung für verschiedene Darstellungen, die auf den internen Ressourcen von 4D oder den Einstellungen des Betriebssystems basieren.

Während die Standardformate in der Regel ausreichen, gibt es Szenarien, in denen eine benutzerdefinierte Formatierung unerlässlich ist, insbesondere für verschiedene geografische Standorte oder spezielle Anforderungen. In 4D v20 R4 wurden erhebliche Fortschritte gemacht, um genau diese Anforderungen zu erfüllen

HDI

Was sind die Vorteile?

Wie bereits in der Einleitung erwähnt, ist die Anzahl der Formatierungsoptionen begrenzt. Wenn Sie ein Dokument für ein anderes Land als das, in dem es erstellt wurde, verfassen möchten, werden die verfügbaren Formate wahrscheinlich nicht denen entsprechen, die der Empfänger wünscht. Es ist daher unerlässlich, bis auf das Komma genau festzulegen, wie Datums- und Zeitangaben am Ende dargestellt werden sollen.

Darüber hinaus bieten sich neue Möglichkeiten, wie Wochen- oder Quartalszahlen oder sogar der Tag des Jahres!

FORMATIERUNG ODER UMWANDLUNG?

Es gibt zwei sehr unterschiedliche Möglichkeiten, Zeiten und Daten zu formatieren.

Die erste besteht darin, einen Anzeigemodus in einem Formular zu definieren. In diesem Fall bleibt ein Datum ein Datum. Es kann sogar mehrmals, aber auf unterschiedliche Weise, in einem Formular oder Dokument angezeigt werden.

Die zweite Möglichkeit ist die Umwandlung eines Datums in eine Zeichenkette mit Hilfe der Funktion String.

In beiden Fällen müssen Sie eine Formatierungszeichenfolge definieren, um das gewünschte Ergebnis zu beschreiben.

Eine allgemeine Formatierungskette

Ob bei der Anzeige (einfache Formatierung) oder bei der Erstellung einer Zeichenkette mit der Funktion String, der erforderliche Parameter (ebenfalls eine Zeichenkette) ist bei beiden Anwendungen gleich.

„EEEE dd/MM/yyyy“, „QQQQ“ oder „HH:mm: ss“?

Dies ist der spannendste Teil, denn er eröffnet fast unendliche Möglichkeiten. Sie können nicht nur über die Reihenfolge der Elemente und deren Darstellung entscheiden, sondern auch andere Informationen preisgeben, die zuvor nicht zugänglich waren, zumindest nicht auf so einfache Weise.

In der Dokumentation werden die Definition und das Ergebnis jedes Buchstabens oder jeder Buchstabenkombination detailliert beschrieben, aber lassen Sie mich Ihnen ein paar Beispiele für Daten geben…

15/06/2000 -> „QQQQ“ -> „2. Quartal“ (in Ihrer Sprache lokalisiert)

17/03/2001 -> „D“ -> „76“ (76. Tag des Jahres, 77. in Schaltjahren)

17/03/1954 -> „w“ -> „11“ (11. Woche des Jahres – die je nach Jahr variiert!)

17/03/1954 -> „eeee“ -> „Mittwoch“ ((Sie können sich vergewissern, dass es ein Mittwoch war 🙂 (Auch lokalisiert)

Ein paar Beispiele mit Uhrzeit

15:00:00 -> „a“ -> „PM“

18:00:00 -> „K“ -> „6“

13:30:15 -> „hh:mm aa O“ -> 01:30 PM GMT+1

Schließlich kann die Formatierungszeichenfolge auch Zeichen enthalten, die, wenn sie zwischen „a“ und „z“ oder „A und „Z“ liegen, in einfache Anführungszeichen gesetzt werden müssen, damit sie nicht als Formatierungszeichen interpretiert werden.

15:30:00 -> „HH ‚Stunden und‘ mm ‚Minuten'“ -> „15 Stunden und 30 Minuten“

 

Der „String“-Befehl

Der String-Befehl wurde so geändert, dass er zusätzlich zu den numerischen Konstanten (wie System date short), die weiterhin verwendet werden können, eine formatierte Zeichenkette als zweiten Parameter akzeptiert.

Zur Erinnerung: Der Befehl String kann ein Datum und eine optionale Uhrzeit annehmen!

String ( expression {; format {; addTime}} ) -> Function result 

Sie können also Datum und Uhrzeit völlig frei formatieren, sogar beides gleichzeitig!

$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)

Das Ergebnis wird „mercredi 17 mars 1954 à 13 heures, 24 minutes et 35 secondes“ auf einem französischen System sein!

Der Befehl „object set format

Nach dem gleichen Prinzip können Sie mit diesem Befehl das Format der in Formularen angezeigten Datums- und Zeitangaben durch Programmierung festlegen. Die Syntax ist genau dieselbe, wie im folgenden Beispiel gezeigt:

OBJECT SET FORMAT(*; "myDate"; "(yyyy) MMM dd")  // (2017) Dec 12
OBJECT SET FORMAT(*; "mytime"; "hh'h' mm'mn' ss'sec.'")  // 15h 12mn 17sec. 

Und schließlich die Schnittstelle!

Natürlich kann alles, was mit dem Befehl OBJECT SET FORMAT programmiert wird, auch direkt in den Formularen erfolgen. Die Liste der möglichen Formate für Datums- und Zeitangaben enthält jetzt eine „benutzerdefinierte“ Zeile zur Eingabe der gewünschten Formatierungszeichenfolge. Der Aufbau dieser Zeichenkette ist natürlich derselbe wie bei den oben aufgeführten Befehlen.

blank

Neues Eingabemuster, wenn das Datumsformat auf Benutzerdefiniert eingestellt ist

Fazit

Kurz gesagt, diese neue Funktion gibt Ihnen viel Freiheit bei der Anzeige von Daten und Zeiten. Die Vereinfachung des Codes Ihrer Anwendungen verkürzt die Entwicklungszeit und ermöglicht eine bessere Formularoptimierung. In der Dokumentation finden Sie weitere Einzelheiten zu dieser Funktion.

 

Roland Lannuzel
- Product Owner & 4D Experte - Nach seinem Studium der Elektronik arbeitete Roland als Entwickler und Berater in der industriellen IT-Branche, wo er Lösungen für Kunden mit einer Vielzahl von Datenbanken und Technologien entwickelte. In den späten 80er Jahren verliebte er sich in 4D und setzte es bei der Entwicklung von Geschäftsanwendungen wie Buchhaltungs-, Abrechnungs- und E-Mail-Systemen ein. 1997 trat er schließlich in das Unternehmen ein und leistete einen wertvollen Beitrag, indem er Spezifikationen, Testtools und Demos entwarf, Schulungen durchführte und auf vielen Konferenzen für die 4D Community sprach. Er gestaltet die Zukunft von 4D aktiv mit, indem er neue Funktionen und Datenbankentwicklungstools definiert.