Datum formatieren
Wertauflöser - Kurzfassung
Zweck: Wandelt einen Datumswert oder Datumsbereich im Eingabewert in eine formatierte Zeichenfolge um, die einen Zeitpunkt oder ein Intervall beschreibt.
Im Server-Kontext (z. B. Ereignisbehandlungen) |
Im Client-Kontext (z. B. Client Workflow) |
|
|
Der Datum formatieren-Wertauflöser wandelt den als Eingabewert anliegenden Datumswert oder Datumsbereich nach der als Format definierten Vorlage (Pattern) in eine formatierte Zeichenfolge um.
Interpretation von Datumswerten ohne deklarierte Zeitzone
Ein Long-Wert als Eingabewert wird als Millisekunden seit 01.01.1970 00:00:00.000 (UTC) interpretiert. Allerdings gilt dabei - wie für alle als Datum interpretierten Eingabewert-Typen ohne Zeitzone (Long, Timestamp, Date) - nicht die Zeitzone UTC als Standard. Vielmehr wird die im Kontext anwendbare Standard-Zeitzone nach folgender Logik berücksichtigt:
Sofern für den Benutzer der Session (in der tatsächlich angemeldeten Sitzung) eine "Default Zeitzone" (defaultTimeZone) definiert ist, wird diese verwendet.
Andernfalls wird auf das Konto der Firma der Session (in der tatsächlich angemeldeten Sitzung) und die dort ggf. definierte "Default Zeitzone" (defaultTimeZone) zurückgegriffen.
Nur wenn keines der beiden Konten eine "Default Zeitzone" für die tatsächlich angemeldete Sitzung definiert, gibt die Auswahl für die Zeitzone im Betriebssystem des Servers oder Clients den Ausschlag:
Im Server-Kontext (z. B. für Ereignisbehandlungen) wird die Zeitzone aus dem Ausführungskontext des Lobster Data Platform / Orchestration-Servers übernommen.
Im Client-Kontext (z. B. in einem Client Workflow) wird die Auswahl für die Zeitzone im Client-Betriebssystem übernommen.
Für einen Datumsbereich wird dasselbe Format für Von- und Bis-Zeitpunkt angewendet.
Der Rückgabewert des Wertauflösers zeigt einen Datumsbereich nur als Intervall an, wenn sich die formatierten Werte (Von/Bis) unterscheiden.
Ein Relativer Datumsbereich mit Zeit-Wertauflöser mit dem Typ "Dieses Jahr" ergibt bei einer Formatierung mit Datum, Uhrzeit und Zeitzone z. B. das folgende Intervall:
01.01.2022 00:00 (UTC) - 31.12.2022 23:59 (UTC)
Sofern die formatierten Zeichenfolgen für Von-Zeitpunkt und Bis-Zeitpunkt eines Datumsbereichs identisch ausfallen, definiert der Rückgabewert kein Intervall, sondern nur den (gemeinsamen) Zeitpunkt.
Ein Relativer Datumsbereich mit Zeit-Wertauflöser mit dem Typ "Dieser Tag" ergibt für ein Format, das nur Datum und Zeitzone verwendet, z. B. den folgenden Rückgabewert:
30.04.2022 (UTC)
Konfiguration
Im optionalen Parameter Format kann per Direkteingabe (als statischer Text) oder über Wertauflöser zur Laufzeit ein sogenanntes Pattern festgelegt werden, das die gewünschte Kombination von Datum/Uhrzeit-Komponenten in Kombinationen mit "Literalen" (z. B. Trennzeichen) definiert.
Der optionale Parameter Sprache wird nur im serverseitigen Einsatz unterstützt. Er definiert explizit die Sprache für Lokalisierungen im Rückgabewert und ggf. das anwendbare Standard-Pattern.
Wie und welche Pattern letters im Parameter Format zur Laufzeit interpretiert werden, hängt vom Einsatzkontext des Wertauflösers ab:
Einsatzkontext |
Interpretation des Patterns im Parameter "Format" |
Beispiel |
Server |
Pattern-Syntax für das Java SimpleDateFormat mit den folgenden Ausnahmen: ►WICHTIG◄ Spezifische Abweichungen vom SimpleDateFormat
Serverseitig erfolgt per Standard keine Lokalisierung von Datumskomponenten (im Unterschied zum Client, der analog zur fd (Datum formatieren)-Funktion lokalisiert). Über den optionalen Parameter Sprache kann allerdings explizit die für Lokalisierungen zu berücksichtigende Sprache statisch (durch Statische Werte in der Konfiguration) oder dynamisch (über Wertauflöser anderer Kategorien) definiert werden. Ohne Zuordnung einer Sprache greift serverseitig das Java-Locale abhängig vom Ausführungskontext des Lobster Data Platform / Orchestration-Servers:
|
HH:mm 'am' dd-MMMM-yyyy liefert z. B. 13:45 am 31-December-2021 ... sofern der Ausführungskontext des Lobster Data Platform / Orchestration-Servers "Englisch" lokalisiert ist. |
Client |
Eingeschränkte Pattern-Syntax, wie für die Funktion fd beschrieben:
Lokalisierung von Datumskomponenten (über Sprachverwaltung bzw. Firmenspezifische Sprachanpassungen), wie für die Funktion fd beschrieben
|
HH:mm 'am' dd-MMMM-yyyy liefert immer $null , weil ...
HH:mm ~ dd-MMMM-yyyy liefert z. B. 13:45 ~ 31-Dezember-2021 |
Ohne Angabe eines Patterns für die Format-Zeichenfolge werden Lokalisierungseinträge aus der Sprachverwaltung oder Firmenspezifische Sprachanpassungen nach dem folgenden Schema als Standard-Pattern zugeordnet:
[lobsterui,dateFormat] [lobsterui,timeFormat]
Die Sprachverwaltung sieht per Standard folgende Lokalisierungen für das Standard-Pattern vor:
Komponente |
Bundle |
Resource |
Sprache |
Standard-Pattern |
Beispiel |
Datum |
lobsterui |
dateFormat |
Deutsch (de) |
DD.MM.YYYY |
31.12.2021 |
Englisch (en) |
MM/DD/YYYY |
12/31/2021 |
|||
Uhrzeit |
timeFormat |
Deutsch (de) |
HH:mm |
13:45 |
|
Englisch (en) |
hh:mm a |
01:45 PM |
Die beiden Komponenten (Datum und Uhrzeit) werden per Standard gemeinsam (getrennt durch ein Leerzeichen) ausgegeben.
►HINWEIS◄ Die als Lokalisierungstexte hinterlegten Patterns sollten so definiert sein, dass sie der restriktiveren Syntax für den Client-Kontext entsprechen (s. Tabelle oben). Anderenfalls liefert der Datum formatieren-Wertauflöser im clientseitigen Einsatz immer $null als Rückgabewert, wenn kein Format angegeben ist.
Weitere Standard-Lokalisierungen in der Sprachverwaltung, die für die Ausgabe relevant sein können:
Komponente |
Pattern |
Bundle |
Resource |
Sprache |
Standard |
Datum |
MonatMMMM |
lobsterui |
monthNames |
Deutsch (de) |
Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember |
Englisch (en) |
January,February,March,April,May,June,July,August,September,October,November,December |
||||
Monat (kurz) |
monthNamesShort |
Deutsch (de) |
Jan,Feb,Mrz,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez |
||
Englisch (en) |
Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec |
||||
Wochentag |
dayNames |
Deutsch (de) |
Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag |
||
Englisch (en) |
Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday |
||||
Wochentag (kurz) |
dayNamesShort |
Deutsch (de) |
So,Mo,Di,Mi,Do,Fr,Sa |
||
Englisch (en) |
Sun,Mon,Tue,Wed,Thu,Fri,Sat |
||||
Quartal |
quarterNames |
Deutsch (de) |
erstes Quartal,zweites Quartal,drittes Quartal,viertes Quartal |
||
Englisch (en) |
first quarter,second quarter,third quarter,fourth quarter |
||||
Uhrzeit |
AM/PM |
am |
Deutsch (de) |
vorm. |
|
Englisch (en) |
AM |
||||
pm |
Deutsch (de) |
nachm. |
|||
Englisch (en) |
PM |
Beispiele
Formatierung eines Datumswerts
Konfiguration |
Ergebnis (im Server-Kontext) |
Ergebnis (im Client-Kontext) |
|
Aufgrund der Einstellungen für den Ausführungskontext des Lobster Data Platform / Orchestration-Servers erscheint das Datumsformat (hier) immer in Java-"Englisch" |
Im Client werden die Lokalisierungen für die Sprache "Deutsch" (de) berücksichtigt. |
Im Beispiel wird die aktuelle Uhrzeit über einen Wertauflöser vom Typ Relatives Datum mit Zeit ermittelt. Sie soll formatiert als Text einer Meldung erscheinen.
Der Datum formatieren-Wertauflöser wird per Verkettung nachgeschaltet, um die Ausgabe von Datum und Uhrzeit (hier inkl. Zeitzone) zu formatieren.
Formatierung von Datum und Uhrzeit per Standard je Sprache
Konfiguration |
Ergebnis (DE) |
Ergebnis (EN) |
Ohne Parameter werden die Standardformate für Datum und Uhrzeit aus der Sprachverwaltung (s. o.) angewendet. Würde auf den Datum formatieren-Wertauflöser im Kontext der Meldung dagegen komplett verzichtet, dann zeigt die Meldung das String-Abbild für den "Datumsbereich mit Zeit" im folgenden Format: 2019-03-10 23:00:00.000 UTC - 2019-03-16 23:00:00.000 UTC |
|
|
►WICHTIG◄ Falls das über den Lokalisierungseintrag definierte Standard-Pattern lokalisierbare Komponenten (z. B. das Pattern EEEE für den Wochentag) enthält, unterscheidet sich das Ergebnis wie oben gezeigt abhängig vom Einsatzkontext (Server: abh. vom Java-Locale, Client: Aktuelle Sprache). Der serverseitige Ausführungskontext ist auch maßgeblich für andere Aspekte der Datumsbehandlung in Lobster Data Platform / Orchestration. Dazu gehört u. a. die Einstellung für den ersten Tag der Woche. Ob die "Aktuelle Kalenderwoche" - wie oben links - von Montag (11.03.2019) bis Sonntag oder - wie oben rechts - von Sonntag (10.03.2019) bis Montag abgegrenzt wird, hängt ausschließlich von der serverseitigen Einstellung für den ersten Tag der Woche ab. Die beiden Screenshots wurde also auf zwei unterschiedlichen Systemen erzeugt. ►ANMERKUNG◄ Die Sprachverwaltung enthält einen Eintrag lobsterui/firstDayOfWeek, der aber nur für die Darstellung von DatePicker-Elementen (z. B. Datum/Uhrzeit und Datumsbereich) in der interaktiven Oberfläche ausschlaggebend ist. |
Formatierung von Datum und Uhrzeit für eine bestimmte Sprache
Im Kontext einer Ereignisbehandlung soll im "Betreff" einer E-Mail für eine Buchungsbestätigung das Buchungsdatum ausdrücklich unter Verwendung der in Lobster Data Platform / Orchestration festgelegten Lokalisierung für die Sprache en_US wiedergegeben werden.
Die Ausgabe soll ohne Rücksicht auf die Aktuelle Sprache für eine Buchung für den 04.07.2022 wie folgt aussehen: "CONFIRMED: MON04JUL22"
Konfiguration:
Im Betreff der E-Mail-Versand-Ereignisaktion, wird der auszugebende Text durch die rechts abgebildete Verkettung von Wertauflösern erzeugt:
|
|
►HINWEIS◄ Die einfachen Hochkommas ('...') sind hier unbedingt erforderlich, damit der Text "CONFIRMED: " als Literal verarbeitet wird. Anderenfalls verursacht schon der erste Buchstabe ("C") eine Fehlermeldung (IllegalArgumentException: Illegal pattern character) auf.