format-dateTime
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 5.)
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
Kategorie: Typkonvertierung und Ausgabeformatierung
Herkunft: XSLT 2.0
Rückgabewert: Ein String xs:string; der anhand eines Musterstrings und weiteren optional zu übergebenden Parametern formatierte Eingabewert
Aufruf/Argumente:
format-dateTime($zeitstempel?, $formatierungsmuster, $sprache?, $kalender?, $verortung?)
$zeitstempel:
Optional. Ein Zeitstempelwert vom Typ xs:dateTime, der eine Zeitzonenangabe beinhalten kann. Wird kein Wert übergeben, also die leere Sequenz, so gibt die Funktion diese zurück.
$formatierungsmuster:
Obligatorisch. Eine Zeichenkette xs:string, die in Form eines vorgegebenen Musters (picture string) die Formatierung der resultierenden Zeichenkette bestimmt (ausführliche Erläuterung siehe format-date()).
$sprache:
Optional. Eine Zeichenkette xs:string in Form eines aus zwei Zeichen bestehenden Kürzels einer Landesbezeichnung nach ISO 3166-1. Durch den dritten Parameter kann eine Sprache für die Formatierung des Datumsstrings bestimmt werden. Dies hat unmittelbar Auswirkung auf die als Namen von Wochentagen oder Monaten gewählten Bezeichner, gegebenenfalls auch auf die Reihenfolge der Ausgabe der Komponenten des Datumswertes. Die entsprechenden Bezeichner und üblichen Abkürzungen müssen dem System zur Verfügung stehen.
$kalender:
Optional. Eine Zeichenkette xs:string in Form einer aus Großbuchstaben bestehenden Kurzbezeichnung desjenigen Kalenders, der der Formatierung zugrunde gelegt werden soll. Defaultwert ist der Kalender nach ISO (entspricht dem Gregorianischen Kalender), dessen Unterstützung vorgeschrieben ist. Der Defaultkalender tritt auch bei der Übergabe des leeren Strings oder der leeren Sequenz für $kalender in Kraft. Die Unterstützung weiterer Kalender ist implementationsabhängig.
$verortung:
Optional. Eine Zeichenkette xs:string in Form eines aus zwei Zeichen bestehenden Kürzels einer Landesbezeichnung nach ISO 3166-1. Dieser zur Sprachangabe redundant erscheinende Parameter dient dazu, den zu formatierenden Wert geographisch zu verorten und die Formatierung der Zeitangabe gemäß dieser Verortung zu modifizieren.
Verwendungszweck:
Die Funktion format-dateTime() bestimmt die äußere Form, in dem ein ihr übergebener Zeitstempelwert xs:dateTime als String xs:string formatiert ausgegeben wird.
Zur Bestimmung des Aussehens der Formatierung wird ein, als zweites obligatorisches Argument, übergebener String zu Hilfe genommen, und im Sinne eines Formatierungsmusters (picture string) eingesetzt.
Ein Funktionsaufruf ohne weitere Argumente bezieht sich auf die Defaultformatierung. Diese wird entsprechend der Systemumgebung vorgenommen. Betroffen ist die Wahl des Kalenders (z.B. Gregorianisch) und der Spracheinstellung. Letztere hat unter anderem Einfluss auf die Reihenfolge der Komponentenausgabe oder bei Tageszeitausgabe auf die Wiedergabe der Stundenwerte (0-23 vs 1-24, 0-11 vs 1-12).
Soll die Formatierung nicht anhand der Default-Einstellungen vorgenommen werden, so können mittels zweier weiterer optionaler Argumente eine explizite Spracheinstellung sowie der zugrunde gelegte Kalender spezifiziert werden. Ein fünftes (umstrittenes) Argument ist dafür vorgesehen, die Formatierung eines Wertes an einen geographischen Ort zu binden.
Weitere Erläuterungen bei format-date()
Eine ausführliche Erläuterung zu Formatierungsmuster, Komponentenplatzhalter und Präsentationsmodifikatoren sowie zum Kalenderargument finden Sie bei der Funktion format-date().
Da ein Zeitstempelwert xs:dateTime sowohl alle Datums- als auch alle Tageszeitkomponenten enthält, dürfen im Formatierungsmuster alle vereinbarten Komponentensymbole eingesetzt werden.
Symbol | Komponente | Präsentation | Beispiel |
---|---|---|---|
Y | Jahreszahl | numerisch | 2003 |
M | Monat (bezogen auf Jahr) | numerisch | 12 |
D | Tag (bezogen auf Monat) | numerisch | 30 |
d | Tag (bezogen auf Jahr) | numerisch | 365 |
F | Tag (Wochentag) | Bezeichner | Friday |
W | Woche (Kalenderwoche) | numerisch | 52 |
w | Woche (des Monats) | numerisch | 3 |
H | Stunde (24 Stunden-Tag) | numerisch | 23 |
h | Stunde(2x12 Stunden-Tag) | numerisch | 10 |
P | AM/PM-Angabe | Bezeichner | AM |
m | Minute (bez. auf Stunde) | numerisch | 59 |
s | Sekunde (bez. auf Minute) | numerisch | 30 |
f | Sekunden mit Bruchteil | numerisch | 59.99 |
Z | Zeitzone UTC | numerisch | +2:00 |
z | Zeitzone GMT | Bez. + num. | GMT +2:00 |
C | verwendeter Kalender | Bezeichner | Gregorian |
E | Bezugsära | Bezeichner | [Herschername] |
Tabelle: Komponentensymbole des Formatierungsmusters.
Die beiden Zeitzonensymbole werden wie folgt interpretiert:
Z steht für eine Zeitzonenangabe bezogen auf UTC-Zeit, die entweder numerisch als Zeitdifferenz ausgegeben werden kann, oder, mit Modifikator N, durch ZN als Zeitzonenbezeichner (z.B. EST für Eastern Standard Time). Besteht keine Differenz (die Zeitangabe liegt bereits in UTC vor), so wird dies durch den Buchstaben Z symbolisiert.
z steht für eine Zeitzonenangabe bezogen auf GMT-Zeit, die als Zeitdifferenz, in der Form GMT ± [hh:00] präsentiert wird, beispielsweise GMT +2:00.
Beispiele:
Beispiel 1 – Einfache Zeitstempelformatierung, Version 1
format-dateTime($dt,"[Y]-[M]-[D] [H]:[m]")
ergibt: 2007-12-31 15:58
In diesem Fall werden einfach die Zahlenwerte der jeweiligen Komponenten entnommen und in entsprechender Reihenfolge mit den vorgesehenen Stringliteralen versehen ausgegeben.
Beispiel 2 – Einfache Zeitstempelformatierung, Version 2:
format-dateTime($dt,"[M]-[D]-[Y] [H]:[m]:[s]")
ergibt: 12-31-2007
Prinzipiell eine Variante von Beispiel 1. Die Reihenfolge der Ausgabe entspricht der Reihenfolge der Platzhalter im Musterstring. Die Tageszeitausgabe wurde erweitert um die Ausgabe der Sekundenkomponente.
Beispiel 3 – Einfache Zeitstempelformatierung, Version 3:
format-dateTime($dt,"[D]. [M].[Y], [h]:[m]:[s] Uhr")
ergibt: 31. 12. 2007, 15:58:45 Uhr
Hier werden andere Stringliterale verwendet. Die Ausgabe entspricht der Konvention im deutschen Sprachraum, wird aber nicht über eine Datumsformatdeklaration mit language-Attribut erreicht, sondern unmittelbar durch die Form des Musterstrings.
Beispiel 4 -Datumsformatierung mit Datumsformatdeklaration (1):
format-dateTime($dt,"[D1o] [Mn], [Y]; [h]:[m] [PN]", "en", (), ())
ergibt: 31st December, 2007; 3:58 PM
Das Teilmuster [D1o] gibt den Tag mit Ordinal aus. Da dies durch den sekundären Modifikator o bewirkt wird, muss dem D auch die 1, obwohl nicht in diesem Sinne »modifizierend«, als primärer Modifikator beigegeben werden (D1o; D mit 1 als primärem und o als sekundärem Modifikator).
Die Monatsnamen werden gemäß den Regeln der mit dem dritten Argument "en" bezeichneten Sprache als Bezeichner mit Groß- und Kleinbuchstaben ausgegeben (Mn; M mit Modifikator n).
Entsprechend erfolgt auch die Tageszeitausgabe nach angloamerikanischer Konvention Die AM/PM-Angabe wird mit Großbuchstaben vorgenommen (PN; P mit Modifikator N), der Stundenwert angepasst (3 statt 15).
Es wird der Defaultkalender verwendet, da für das calendar-Argument die leere Sequenz übergeben wurde. Für das nicht verwendete (fünfte) Verortungs-Argument wird aus formalen Gründen ebenfalls die leere Sequenz übergeben.
Beispiel 5 – Datumsformatierung mit Datumsformatdeklaration (2):
format-dateTime($dt,"[Fn] [D] [Mn] [Y],[H]:[m]:[s] [z]", "sv", (), ())
ergibt: Onsdag 31 December 2007, 15:58:45 GMT+01:00
Der Funktionsaufruf bestimmt Schwedisch "sv" als Formatierung. Der Prozessor muss also die Ausgabe in schwedischer Sprache entsprechend unterstützen, sonst schlägt der Funktionsaufruf fehl.
Die Ausgabe der Tageszeitkomponenten ist konventionell. Hier wird mittels des Platzhaltersymbols z die Ausgabe der Zeitzone bezogen auf GMT (Greenwich Mean Time) gefordert.
Da das (vierte) calendar-Argument ebenfalls leer ist, gilt der Defaultkalender »Gregorian«. Das fünfte Argument wurde weggelassen.
Funktionsdefinition:
XSLT 1.0:
Funktion nicht verfügbar
XSLT 2.0:
format-dateTime($value as xs:dateTime?,
$picture as xs:string) as xs:string?
format-dateTime($value as xs:dateTime?,
$picture as xs:string,
$language as xs:string?,
$calendar as xs:string?,
$country as xs:string?) as xs:string?
Tipp der data2type-Redaktion: Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Galileo Press, Rheinwerkallee 4, 53227 Bonn