WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

DATETIME-Werte formatieren und ihre Syntax analysieren

In diesem Abschnitt erfahren Sie, wie Sie das dateTime-Format mithilfe einer Zeichenfolge von Musterbuchstaben festlegen.

Bei der Umwandlung eines Datums oder einer Uhrzeit in eine Zeichenfolge muss ein Formatmuster angewendet werden, über das die Umwandlung gesteuert wird. Verwenden Sie dieses Formatmuster entweder für die Umwandlung eines Datums oder einer Uhrzeit in eine Zeichenfolge oder für die Auswertung einer Zeichenfolge zur Umwandlung in ein Datum oder eine Uhrzeit.

Während der Konvertierung (z. B. eines Datum/Zeit-Formats in eine Zeichenfolge) wird ein Muster oder eine Gruppe von Tokens durch die entsprechende Quelle ersetzt. Aus dem nachfolgenden Diagramm geht hervor, wie ein Muster zum Formatieren einer Datum/Zeit-Quelle verwendet wird, um eine Zeichenfolgeausgabe zu erzeugen.

Dieses Diagramm zeigt die Ausgabezeichenfolge, die sich aus einer Datum/Zeit-Quelle und einem Formatmuster ergibt.

Beim Auswerten einer Zeichenfolge (z. B. bei der Umwandlung der Zeichenfolge in ein Datum/Zeit-Format) wird das Muster oder die Gruppe von Tokens verwendet, um zu ermitteln, welcher Teil des Datum/Zeit-Zielformats durch welchen Teil der Zeichenfolge dargestellt wird. Im folgenden Diagramm wird gezeigt, wie das funktioniert.

Dieses Diagramm zeigt die Datum/Zeit-Ausgabe, die sich aus einer Zeichenfolgedatenquelle und einem Formatmuster ergibt.

Syntax

Das Ausdrucksmuster wird wie folgt definiert:

Syntaxdiagramm lesenSyntaxdiagramm überspringen
   .------------------.   
   V                  |   
>>---+-Symbol-------+-+----------------------------------------><
     '-Zeichenfolge-'     

Dabei gilt:
Symbol
ist ein Zeichen im Zeichensatz adDeEFGhHIkKmMsSTUwWyYzZ.
Zeichenfolge
ist eine Zeichenfolge in einfachen Anführungszeichen. Wenn innerhalb der Zeichenfolge ein einfaches Anführungszeichen erforderlich ist, verwenden Sie zwei einfache Anführungszeichen (").

Zeichen zum Formatieren eines Datum/Zeit-Formats als eine Zeichenfolge

In der folgenden Tabelle sind die Zeichen aufgelistet, die in einem Muster zur Formatierung bzw. Auswertung von Zeichenfolgen für ein Datum/Zeit-Format verwendet werden können. Nach der Tabelle folgen einige Anmerkungen, die weitere Informationen zu den Beispielen in der Tabelle enthalten.

Symbol Bedeutung Darstellung Beispiele
a Kennzeichnung für Vormittag (AM) oder Nachmittag (PM) Text Eingabe: am, AM, pm, PM. Ausgabe: AM oder PM
d Tag in Monat (1-31) Nummer 1, 20
dd Tag in Monat (01-31) Nummer 01, 31
D Tag in Jahr (1-366) Nummer 3, 80, 100
DD Tag in Jahr (01-366) Nummer 03, 80, 366
DDD Tag in Jahr (001-366) Nummer 003
e Tag in Woche (1-7)1 Nummer 2
EEE Tag in Woche1 Text Di
EEEE Tag in Woche1 Text Dienstag
F Wochentag in Monat (1-5)2 Nummer 2
G Jahrhundert Text v. Chr oder n. Chr
h Stunde in AM oder PM (1-12) Nummer 6
hh Stunde in AM oder PM (01-12) Nummer 06
H Stunde des Tages im 24-Stunden-Format (0-23)3 Nummer 7
HH Stunde des Tages im 24-Stunden-Format (00-23)3 Nummer 07
I ISO8601 Datum/Zeit (bis jjjj-MM-tt'T'HH:mm:ss.SSSZZZ)4 Text 2006-10-07T12:06:56.568+01:00
IU ISO8601 Datum/Zeit (ähnlich wie I, aber ZZZ mit Ausgabe "Z", wenn die Zeitzone +00:00 ist)4 Text 2006-10-07T12:06:56.568+01:00, 2003-12 -15T15:42:12.000Z
k Stunde des Tages im 24-Stunden-Format (1-24)3 Nummer 8
kk Stunde des Tages im 24-Stunden-Format (01-24)3 Nummer 08
K Stunde in AM oder PM (0-11) Nummer 9
KK Stunde in AM oder PM (00-11) Nummer 09
m Minute Nummer 4
mm Minute Nummer 04
M Monatszahl Nummer 5, 12
MM Monatszahl Nummer 05, 12
MMM Monatsname Text Jan, Feb
MMMM Monatsname Text Januar, Februar
s Sekunden Nummer 5
ss Sekunden Nummer 05
S Dezisekunde5 Nummer 7
SS Hundertstelsekunde5 Nummer 70
SSS Millisekunde5 Nummer 700
SSSS 0,0001 Sekunde5 Nummer 7000
SSSSS 0,00001 Sekunde5 Nummer 70000
SSSSSS 0,000001 Sekunde5 Nummer 700000
T ISO8601 Uhrzeit (bis HH:mm:ss.SSSZZZ)4 Text 12:06:56.568+01:00
TU ISO8601 Uhrzeit (ähnlich wie T, aber Zeitzone +00:00 wird durch 'Z' ersetzt)4 Text 12:06:56.568+01:00, 15:42:12.000Z
w Woche in Jahr6 Nummer 7, 53
ww Woche in Jahr6 Nummer 07, 53
W Woche in Monat7 Nummer 2
yy Jahr8 Nummer 06
yyyy Jahr8 Nummer 2006
YY Jahr: nur mit Woche in Jahr verwenden6 Nummer 06
YYYY Jahr: nur mit Woche in Jahr verwenden6 Nummer 2006
zzz Zeitzone (abgekürzter Name)9 Text EST
zzzz Zeitzone (vollständiger Name) Text Eastern Standard Time
Z Zeitzone (+/-n) Text +3
ZZ Zeitzone (+/-nn) Text +03
ZZZ Zeitzone (+/-nn:nn) Text +03:00
ZZZU Zeitzone (wie ZZZ, "+00:00" wird durch "Z" ersetzt) Text +03:00, Z
ZZZZ Zeitzone (GMT+/-nn:nn) Text GMT+03:00
ZZZZZ Zeitzone (wie ZZZ, aber ohne Doppelpunkt) (+/-nnnn) Text +0300
' Auslassung für Text   'Benutzertext'
" (zwei einfache Anführungszeichen) einfaches Anführungszeichen in Text mit Escapezeichen   'o"clock'

Die Darstellung des Datum/Zeit-Objekts richtet sich danach, welche Symbole Sie festlegen.

Anmerkungen: Die folgenden Anmerkungen beziehen sich auf die obige Tabelle.
  1. Im Feld Tag in Woche können folgende Werte angegeben werden:
    • 1 - Sonntag
    • 2 - Montag
    • 3 - Dienstag
    • 4 - Mittwoch
    • 5 - Donnerstag
    • 6 - Freitag
    • 7 - Samstag
  2. Der 12. Juli 2006 ist der zweite Mittwoch im Juli und kann als 2006 Juli Mittwoch 2 unter Verwendung der Formatierzeichenfolge yyyy MMMM EEEE F angegeben werden. Beachten Sie, dass dieses Format nicht für den Mittwoch in der zweiten Woche im Juli 2006 steht, denn das ist der 5. Juli 2006; die Formatierzeichenfolge hierfür ist yyyy MMMM EEEE W.
  3. 24-Stunden-Felder können zu einer mehrdeutigen Zeitangabe führen, wenn es zu Konflikten mit einem Feld im Format 'am/pm' kommt.
  4. Weitere Informationen hierzu finden Sie unter ISO8601, Datum/Zeit-Token I und T.
  5. Sekundenbruchteile werden durch ein S in Großbuchstaben dargestellt. Die Länge muss implizit der Anzahl der Formatsymbole bei der Eingabe entsprechen. Die Formatierzeichenfolge ss SSS oder ss.SSS steht beispielsweise für Sekunden und Millisekunden. Die Formatierzeichenfolge ss.sss steht jedoch für ein Wiederholungsfeld (Sekunden); der Wert nach dem Punkt (.) wird als Sekundenfeld ausgewertet, nicht als Sekundenbruchteile. Die Ausgabe wird auf die angegebene Länge abgeschnitten.
  6. In ESQL wird davon ausgegangen, dass der erste Tag im Jahr in der ersten Woche ist. Der 1. Januar ist also in Woche 1. Dies kann dazu führen, das eine Datumsangabe, die relativ zu einem Jahr gemacht wird, ein Datum in einem anderen Jahr sein kann. Beispielsweise ergibt die syntaktische Analyse von "Montag Woche 1 2005" unter Verwendung von "EEEE' Woche 'w' 'YYYY" das Datum 2004-12-27, da der Montag der ersten Woche des Jahres 2005 ein Datum im Jahr 2004 ist.

    Wenn Sie das y-Symbol verwenden, wird keine Anpassung ausgeführt. Für Daten um das Jahresende herum könnten unvorhersehbare Ergebnisse auftreten. Die Zeichenfolge "2005 01 Montag" ist beispielsweise wie folgt formatiert:

    • Der Montag in der Woche 1 des Jahres 2005 unter Verwendung der Formatierzeichenfolge "YYYY ww EEEE" wird korrekt als 27. Dezember 2004 interpretiert
    • Der Montag in der Woche 1 des Jahres 2005 unter Verwendung der Formatierzeichenfolge "yyyy ww EEEE" wird fälschlicherweise als 27. Dezember 2005 interpretiert.
  7. Die erste und letzte Woche in einem Monat können Tage aus den angrenzenden Monaten enthalten. Montag 31. Juli 2006 kann beispielsweise als Montag in Woche eins im August 2006 ausgedrückt werden. Dies wäre 2006 08 1 Montag mit der Formatierzeichenfolge yyyy MM W EEEE.
  8. Jahr wird als Sonderfall behandelt.
    • Wenn die Anzahl von y bei der Ausgabe 2 lautet, wird das Jahr auf zwei Ziffern gekürzt. Beispiel: yyyy ergibt 1997, yy ergibt 97.
    • Bei der Eingabe ist für zweistellige Jahresangaben das Jahrhundertfenster auf 53 festgelegt. Beispielsweise ergibt die Eingabe von 52 den Jahreswert 2052, während 53 das Ausgabejahr 1953 und 97 das Jahr 1997 ergibt.
  9. Die Verwendung der Option zzz kann zu mehrdeutigen Ergebnissen führen. Beispielsweise kann BST als Bangladesh Standard Time (Standardzeit in Bangladesh) oder als British Summer Time (Britische Sommerzeit) interpretiert werden. Aus Kompatibilitätsgründen verwendet WebSphere Message Broker die erste Interpretation.

    Um diese Probleme zu vermeiden, verwenden Sie die Option zzzz mit einem klar strukturierten Namen, beispielsweise Europa/London, Asien/Dhaka oder Amerika/Los_Angeles.

ISO8601, Datum/Zeit-Token I und T

Wenn Ihre Werte für Datum/Zeit dem ISO8601:2000-Standard zur 'Darstellung von Datum und Uhrzeit' entsprechen, sollten Sie die Verwendung der Formatierungssymbole I und T in Erwägung ziehen, die der folgenden Teilmenge des ISO8601-Standards entsprechen.

Verwenden Sie die Formatierungssymbole I und T nur eigenständig:

Die folgende Tabelle zeigt, wie sich das Ausgabeformat auf den logischen Datentyp bezieht.

Logischer Modelldatentyp ESQL-Datentyp Ausgabeformat
xsd:dateTime TIMESTAMP oder GMTTIMESTAMP jjjj-MM-tt'T'HH:mm:ss.SSSZZZ
xsd:date DATE jjjj-MM-tt
xsd:gYear INTERVAL yyyy
xsd:gYearMonth INTERVAL jjjj-MM
xsd:gMonth INTERVAL --MM
xsd:gmonthDay INTERVAL --MM-dd
xsd:gDay INTERVAL ---dd
xsd:time TIME / GMTTIME 'T'HH:mm:ss.SSSZZZ
Anmerkung:
  • Bei der Eingabe akzeptieren I und T sowohl '+00:00' als auch 'Z' zur Anzeige eines Zeitunterschieds von null zur Coordinated Universal Time (UTC), generieren bei der Ausgabe aber stets '+00:00'. Wenn bei der Ausgabe immer 'Z' generiert werden soll, verwenden Sie stattdessen die Formatierungssymbole 'IU' oder 'TU'.
  • ZZZ schreibt stets '+00:00', um einen Zeitunterschied von null zur Coordinated Universal Time (UTC) anzuzeigen. Wenn bei der Ausgabe immer 'Z' generiert werden soll, verwenden Sie stattdessen ZZZU.

UTC-Eingabeformat für die Ausgabe verwenden

Ein Element oder Attribut des logischen Typs xsd:dateTime oder xsd:time, das eine Datum/Zeit-Angabe als Zeichenfolge enthält, kann die UTC-Zeit (Coordinated Universal Time) angeben, indem entweder das Symbol Z oder Zeitzone +00:00 verwendet wird. Bei der Eingabe erkennt der MRM-Parser das UTC-Format solcher Elemente und Attribute. Bei der Ausgabe können Sie über die Eigenschaft Standardformat für Datum/Zeit verwenden des Elements oder Attributs angeben, ob Z oder +00:00 angezeigt wird. Alternativ können Sie das UTC-Eingabeformat beibehalten, indem Sie die Nachrichtensatzeigenschaft Benutzen Sie das UTC-Format der Eingabe für die Ausgabe auswählen. Wenn diese Eigenschaft ausgewählt ist, wird das UTC-Format unverändert in die Ausgabenachricht übernommen und überschreibt das durch die Datum/Zeit-Formateigenschaft implizierte Format.

Sommerzeit und CAST-Funktion

Wenn der Broker in einer anderen Zeitzone als GMT (Greenwich Mean Time, Westeuropäische Zeit) ausgeführt wird, berechnet er den Sommerzeit-Ausgleich auf Basis der an ihn durch die CAST-Funktion übergebenen Zeiten. Damit der Ausgleich von CAST richtig berechnet wird, muss der an CAST übergebenen Zeit eine Zeitzone als Z-Parameter übergeben werden. Wenn dem übergebenen Wert keine Zeitzone zugeordnet ist, wird die Zeit in GMT-Zeit konvertiert; sie wird nicht als lokale Zeitmarke behandelt.

Wenn Sie außerdem mit CAST eine Zeichenfolge in einen Zeitwert umsetzen, wird der DST-Ausgleich mit dem aktuellen Systemdatum berechnet. Wenn Sie eine Zeichenfolge in eine Zeitvariable umsetzen und die Sommerzeit für ein bestimmtes Datum berechnen möchten, müssen Sie auch das Datum angeben.

Beispiel: Bei timeValue='10:00:00' konvertiert der folgende Code, der auf einem Broker mit der CDT-Zeitzone ausgeführt wird, die Zeit in GMT-Zeit, da keine Zeitzonen-ID angegeben ist:
DECLARE castTime TIME;
SET castTime = CAST (timeValue AS TIME FORMAT timePattern)
Die Zeit wird nicht erneut in GMT konvertiert, wenn die castTime-Variable in einem nachfolgenden Code verwendet wird. Beispiel:
CAST(castDate, castTime AS GMTTIMESTAMP);

Beispiele

Die folgende Tabelle enthält Beispiele für Datum/Zeit-Formate.

Formatmuster Ergebnis
"yyyy.MM.dd 'um' HH:mm:ss ZZZ" 2006.07.10 um 15:08:56 -05:00
"EEE, MMM d, "yy" Mit, Juli 10, '06
"h:mm a" 8:08 PM
"hh Uhr" a, ZZZZ" 09 Uhr AM, GMT+09:00
"K:mm a, ZZZ" 9:34 AM, -05:00
"yyyy.MMMMM.dd hh:mm aaa" 1996.Juli.10 12:08 PM

Verwendung innerhalb einer MRM-Domäne

In MRM kann ein Element, das den logischen Typ 'dateTime' aufweist, definiert werden.

Bei der Syntaxanalyse eines dateTime-Elements wird in der Nachrichtenbaumstruktur ein Feld erstellt, das den ESQL-Datentyp CURRENT_TIME oder CURRENT_TIMESTAMP aufweist. Die Datentypen CURRENT_TIME und CURRENT_TIMESTAMP verfügen jedoch nicht über de Funktionalität zum Speichern von Zeitzoneninformationen und der MRM stellt die Zeit nicht in Übereinstimmung mit der Empfangszeitzone und der Zeitzone des Brokers ein.

Obwohl die Datentypen CURRENT_TIME und CURRENT_TIMESTAMP die Zeitzoneninformationen niciht speichern können, werden sie vom MRM als Teil des zugrunde liegenden Felds gespeichert. Wenn das Feld also zwischen den Nachrichtenbaumstrukturen kopiert wird, werden die Zeitzoneninformationen dabei ebenfalls kopiert, damit diese Informationen bei der Ausgabe zur Verfügung stehen.

Beachten Sie, dass die Informationen nur erhalten bleiben, wenn das Feld in ein gleichnamiges Feld kopiert wird.

Wenn jedoch ein neues Feld vom alten Feld abgeleitet wird, verfügt das neue Feld nicht über die Zeitzoneninformationen. Wenn ein derartiges Feld also als Zeichen umgesetzt wird, geht das neue Feld von der Zeitzone des Brokers aus, sein Wert wird jedoch nicht entsprechend angepasst, wenn Unterschiede zwischen der Empfangszeitzone und der Zeitzone des Brokers bestehen.

Ein dateTime-Empfangselement, das 2009-02-20T06:08:07-08:00 enthält, könnte beispielsweise aus der Eingabenachrichtenstruktur in die Ausgabenachrichtenstruktur kopiert werden und mit genau diesem Format in einer Ausgabenachricht angezeigt werden. Wenn das Element jedoch von einem Broker, auf dem GMT (Greenwich Mean Time, Westeuropäische Zeit) gilt, als Zeichen mit dem Format IU umgesetzt wird, würde das Ergebnis wie folgt aussehen: 2009-02-20T06:08:07.000Z.

Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:21:35


ReferenzthemaReferenzthema | Version 8.0.0.5 | ak05616_