Innerhalb von anderen Umgebungen (etwa Excel oder Access) wird die zu verwendende Ausgabekultur anhand der Daten der Systemsteuerung ermittelt. Innerhalb von server-daten werden definierte Muster relativ zur aktuellen Spracheinstellung des Clientbrowsers interpretiert. Alternativ kann mittels des sd:culture -Attributes eine Ausgabe-Kultur fixiert werden, in diesem Fall erhalten alle Clientbrowser dieselbe Ausgabe. Intern werden diese Ausdrücke über <Datumsvariable>.ToString(<Formatmuster>, <CultureInfo>) umgeleitet. <CultureInfo> ist eine spezifische Kultur, deren Wert sich entweder aus der Spracheinstellung des Clients oder aus dem Wert des sd:culture -Attributes ergibt. Die hiesigen Tabellen sind im wesentlichen eine Übersetzung der Informationen zur DateTimeFormatInfo - Class.
Formatzeichen | Beschreibung |
---|---|
d | Tag des Monats, bei einstelligen Tagen keine führende Null |
dd | Tag des Monats mit führender Null bei einstelligen Tagesangaben |
ddd | Abgekürzter Name des Wochentags (Mo/Di, Mon/Tue) |
dddd | Vollständiger Name des Wochentags (Montag/Dienstag, Monday/Tuesday) |
M | Monat als Zahl ohne führende Null bei einstelligen Angaben |
MM | Monat als Zahl mit führender Null |
MMM | Abgekürzter Monatsname (Okt/Nov/Dez, Oct/Nov/Dec) |
MMMM | Vollständiger Monatsname (Oktober/November/Dezember, October/November/December) |
y | Jahreszahl ohne Jahrhundert und ohne führende Null bei einstelligen Angaben |
yy | Jahreszahl ohne Jahrhundert mit führender Null |
yyyy | Vierstellige Jahreszahl |
h | Stunde in 12-Stunden-Schreibweise ohne führende Null |
hh | Stunde in 12-Stunden-Schreibweise mit führender Null |
H | Stunde in 24-Stunden-Schreibweise ohne führende Null |
HH | Stunde in 24-Stunden-Schreibweise mit führender Null |
m | Minute ohne führende Null |
mm | Minute mit führender Null |
s | Sekunde ohne führende Null |
ss | Sekunde mit führender Null |
f | Sekundenbruchteil, Genauigkeit auf eine Stelle ohne Rundung |
ff - fffffff | analog, der Rest wird jeweils abgeschnitten |
t | Das erste Zeichen des AM/PM-Kennzeichner (A oder P bzw. kulturabhängig) |
tt | Der AM/PM-Kennzeichner (kulturabhängig) |
z | Zeitzonenoffset ("+" oder "-", gefolgt von der Stundenangabe) ohne führende Null |
zz | Zeitzonenoffset ("+" oder "-", gefolgt von der Stundenangabe) mit führender Null |
zzz | Vollständiger Zeitzonenoffset ("+" oder "-", gefolgt von der Stunden- und Minutenangabe - bsp. "-08:00"). Einstellige Stunden- und Minutenangaben weisen jeweils eine führende 0 auf. |
/ | Das kulturabhängige Standardtrennzeichen für Datumsangaben |
: | Das kulturabhängige Standardtrennzeichen für Zeitangaben |
%x | x bezeichne ein 1-Zeichen-Formatmuster aus der aktuellen Tabelle. Falls nur dieses ausgegeben werden soll, wird '%' davorgesetzt, um es vom Standardmuster zu unterscheiden. Bei mehr als einem Zeichen entfällt '%'. |
\x | Dies fügt x als Literalzeichen ein, ohne es als Formatzeichen zu interpretieren |
Die vordefinierten Muster können, durch Leerzeichen oder beliebige Trennzeichen abgegrenzt, verwendet werden. Falls '/' oder ':' aus der obigen Tabelle verwendet werden, ersetzt die spätere Interpretation diese Zeichen durch jene von der Ausgabekultur festgelegten Datums- und Zeittrenner. Das Muster
dd.MM.yyyy
erzeugt die Ausgabe 15.10.2005
, der Punkt wird absolut interpretiert.
Das Muster dd/MM/yyyy
erzeugt für deutsche Leser ('.' als Datumstrenner) dieselbe Ausgabe, für Leser mit 'en-US'
('/' als Datumstrenner) die Ausgabe 15/10/2005
.
Formatbezeichner | Beschreibung | de-DE | en-US |
---|---|---|---|
d | ShortDatePattern | 24.10.2005 | 10/24/2005 |
D | LongDatePattern | Montag, 24. Oktober 2005 | Monday, October 24, 2005 |
f | Vollständiges Datum und Uhrzeit (langes Datumsformat und 24-Stunden-Zeitformat) | Montag, 24. Oktober 2005 13:15 | Monday, October 24, 2005 1:15 PM |
F | FullDateTimePattern (langes Datumsformat und langes Zeitformat) | Montag, 24. Oktober 2005 13:15:30 | Monday, October 24, 2005 1:15:30 PM |
g | Allgemein (kurzes Datumsformat und 24-Stunden-Zeitformat) | 24.10.2005 13:15 | 10/24/2005 1:15 PM |
G | Allgemein (kurzes Datumsformat und langes Zeitformat) | 24.10.2005 13:15:30 | 10/24/2005 1:15:30 PM |
m, M | MonthDayPattern | 24 Oktober | October 24 |
r, R | RFC1123Pattern | Mon, 24 Oct 2005 13:15:30 GMT | Mon, 24 Oct 2005 13:15:30 GMT |
s | SortableDateTimePattern auf der Grundlage von ISO 8601 unter Verwendung der Ortszeit | 2005-10-24 T13:15:30 | 2005-10-24 T13:15:30 |
t | ShortTimePattern | 13:15 | 1:15 PM |
T | LongTimePattern | 13:15:30 | 1:15:30 PM |
u | UniversalSortableDateTimePattern unter Verwendung des Formats zur Anzeige der koordinierten Weltzeit | 2005-10-24 13:15:30Z | 2005-10-24 13:15:30Z |
U | Vollständige Datum und Uhrzeit (langes Datumsformat und langes Zeitformat) unter Verwendung der koordinierten Weltzeit | Montag, 24. Oktober 2005 11:15:30 | Monday, October 24, 2005 11:15:30 AM |
y, Y | YearMonthPattern | Oktober 2005 | October, 2005 |
Alle Standardmuster sind mit einem Zeichen darstellbar. Es können nicht mehrere Standardmuster in einer Ausgabe gemeinsam verwendet werden.
Beachten Sie allerdings, daß diese Ausgaben weiterhin von der Spracheinstellung des Clientbrowsers abhängig sind und daß nicht nur die Tages- und Monatsbezeichnungen, sondern auch Datums- und Zeittrenner kulturell verschiedenartig sind. So wird, wie im oberen Beispiel des 'ShortDatePattern' 'd' sichtbar, für de-DE der Punkt, für en-US der Slash als Trenner für die Datumsbestandteile verwendet. Ein Attributwert
MM/dd/yyyy
führt deshalb bei
der Browsereinstellung 'de-DE' zur Ausgabe '10.26.2005', bei der Browsereinstellung 'en-US' zu '10/26/2005'. In solchen
Fällen kann es besser sein, das ShortDatePattern zu nutzen, um deutschen Lesern '26.10.2005', amerikanischen Lesern dagegen
'10/26/2005' auszugeben. Soll in jedem Fall '/' als Datumstrenner verwendet werden, so kann dieser mittels '\' maskiert werden.
Der Attributwert MM\/dd\/yyyy
für das sd:datetime-format
-Attribut
erzeugt für alle Leser eine Ausgabe im US-amerikanischen Format. Dies ändert allerdings nichts an den Tages- und Monatsnamen, die weiterhin lokalisiert
werden. Deshalb kann mit dem sd:culture
-Attribut die Kultur für die Darstellung explizit festgelegt
und die Browsereinstellung hierdurch überschrieben werden. Dies ermöglicht es, bsp. immer deutsche oder englische Bezeichnungen
auszugeben.Werden solche Muster in Eingabemasken verwendet, um dort das Format festzulegen, so muß auch die Eingabe diesem Format entsprechen. Ein Format 'dd.MM.yyyy' erfordert die Eingabe einer führenden Null, ein Ausdruck '1.10.2000' wird zurückgewiesen. Für Eingabefelder sind die verkürzten Darstellungen 'd/M/yyyy' ohne Texte und ohne innere Leerzeichen die beste Wahl. Beachten Sie, daß die Darstellung 'd.M.yyyy' absolut, das Format 'd/M/yyyy' dagegen relativ interpretiert wird - '/' ist der Platzhalter für das Datumstrennzeichen. Alternativ können für Eingabefelder Standardmuster (etwa 'd') genutzt werden. Diese werden intern nicht mit <ParseExact> (wie die benutzerdefinierten Formate), sondern schwach mit <Parse> geprüft. Dies schreibt nur die Reihenfolge zwischen Tagen, Monaten und Jahren gemäß der aktuellen Kultur fest, erlaubt jedoch verschiedene Trennzeichen sowie den Verzicht auf führende Nullen. Damit sind für 'de-DE' die Darstellungen '25.2.2000', '25-02-2000' und '25/02/2000' ebenso gültig wie die en-US-Versionen '2.25.2000', '02-25-2000' und '02/25/2000'.
Werden innerhalb von Sql-Abfragen Textkonstanten mit Datums- oder Zeitangaben benötigt, so ist zu beachten, daß der Sql-Server intern ausschließlich en-US - Formate verarbeitet. Hierbei handelt es sich nicht um eine Design-Schwäche des Sql-Servers, sondern um eine bewußt einschränkende Regel innerhalb des Projekts server-daten. Dieses entscheidet alle Sprachalternativen über die Benutzerschicht, so daß jede Kommunikation mit dem Sql-Server mit der Spracheinstellung en-US geführt wird. Datumskonstanten innerhalb von Abfragen können damit in der Form 'MM.dd.yyyy' oder 'yyyy.MM.dd' mit dem Punkt, '-' oder '/' als Trenner notiert werden, so daß '10/25/2005', '10.25.2005', '2005-10-25' und '2005/10/25' erkannt werden. Schließlich gelingt auch die direkte Notation 'yyyyMMdd', etwa '20051025'.