Format-Definitionen für Datum und Uhrzeit

Bei der Ausgabe von Spalten vom Datentyp dateTime kann entweder ein benutzerdefiniertes Formatmuster oder ein Formatbezeichner verwendet werden. Benutzerdefinierte Formatmuster bestehen aus einer Reihung von vordefinierten Formatzeichen, getrennt durch Leerzeichen oder beliebigen anderen Symbolen. Formatbezeichner bestehen zunächst nur aus Kombinationen von Kurz- und Langbezeichnungen. Jede Kultur ordnet jedem Formatbezeichner ein für diese Kultur typisches vordefiniertes Formatmuster zu, welches ebenso aufgebaut ist wie ein benutzerdefiniertes Formatmuster. Damit produziert die Verwendung eines Formatbezeichners bei unterschiedlichen Ausgabekulturen unterschiedliche Darstellungen. Das Formatmuster wird als Attributwert des sd:datetime-format -Attributes festgelegt.

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.

Vordefinierte Formatzeichen für benutzerdefinierte Datums- und Zeitformat-Muster

FormatzeichenBeschreibung
dTag des Monats, bei einstelligen Tagen keine führende Null
ddTag des Monats mit führender Null bei einstelligen Tagesangaben
dddAbgekürzter Name des Wochentags (Mo/Di, Mon/Tue)
ddddVollständiger Name des Wochentags (Montag/Dienstag, Monday/Tuesday)
MMonat als Zahl ohne führende Null bei einstelligen Angaben
MMMonat als Zahl mit führender Null
MMMAbgekürzter Monatsname (Okt/Nov/Dez, Oct/Nov/Dec)
MMMMVollständiger Monatsname (Oktober/November/Dezember, October/November/December)
yJahreszahl ohne Jahrhundert und ohne führende Null bei einstelligen Angaben
yyJahreszahl ohne Jahrhundert mit führender Null
yyyyVierstellige Jahreszahl
hStunde in 12-Stunden-Schreibweise ohne führende Null
hhStunde in 12-Stunden-Schreibweise mit führender Null
HStunde in 24-Stunden-Schreibweise ohne führende Null
HHStunde in 24-Stunden-Schreibweise mit führender Null
mMinute ohne führende Null
mmMinute mit führender Null
sSekunde ohne führende Null
ssSekunde mit führender Null
fSekundenbruchteil, Genauigkeit auf eine Stelle ohne Rundung
ff - fffffffanalog, der Rest wird jeweils abgeschnitten
tDas erste Zeichen des AM/PM-Kennzeichner (A oder P bzw. kulturabhängig)
ttDer AM/PM-Kennzeichner (kulturabhängig)
zZeitzonenoffset ("+" oder "-", gefolgt von der Stundenangabe) ohne führende Null
zzZeitzonenoffset ("+" oder "-", gefolgt von der Stundenangabe) mit führender Null
zzzVollstä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
%xx 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 '%'.
\xDies 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.

Standardformatbezeichner

Es ist zu beachten, daß die Definitionen dieser Tabelle nur die Kombination aus den beiden ersten Spalten umfassen. Jede spezifische Kultur legt mit einem eigenen Formatmuster fest, wie es die Kürzel aus der ersten Spalte interpretiert. Als mögliche Beispiele sind deutsche und englische (en-US) Ausgaben für das jeweilige Muster angegeben.

For­mat­be­zeich­nerBe­schrei­bungde-DEen-US
dShort­Date­Pattern24.10.200510/24/2005
DLong­Date­PatternMontag, 24. Oktober 2005Monday, October 24, 2005
fVoll­ständ­iges Datum und Uhrzeit (langes Datums­format und 24-Stunden-Zeit­format)Montag, 24. Oktober 2005 13:15Monday, October 24, 2005 1:15 PM
FFull­Date­Time­Pattern (langes Datums­format und langes Zeit­format)Mon­tag, 24. Oktober 2005 13:15:30Monday, October 24, 2005 1:15:30 PM
gAllgemein (kurzes Datums­format und 24-Stun­den-Zeit­format)24.10.2005 13:1510/24/2005 1:15 PM
GAllgemein (kurzes Datums­format und langes Zeit­format)24.10.2005 13:15:3010/24/2005 1:15:30 PM
m, MMonth­Day­Pattern24 OktoberOctober 24
r, RRFC­1123­PatternMon, 24 Oct 2005 13:15:30 GMTMon, 24 Oct 2005 13:15:30 GMT
sSort­able­Date­Time­Pattern auf der Grund­lage von ISO 8601 unter Ver­wendung der Orts­zeit2005-10-24 T13:15:302005-10-24 T13:15:30
tShort­Time­Pattern13:151:15 PM
TLong­Time­Pattern13:15:301:15:30 PM
uUni­versal­Sortable­Date­Time­Pattern unter Ver­wendung des Formats zur Anzeige der ko­ordi­nier­ten Weltzeit2005-10-24 13:15:30Z2005-10-24 13:15:30Z
UVoll­ständige Datum und Uhrzeit (langes Datums­format und langes Zeit­format) unter Ver­wendung der ko­ordi­nier­ten WeltzeitMontag, 24. Oktober 2005 11:15:30Monday, October 24, 2005 11:15:30 AM
y, YYear­Month­PatternOktober 2005October, 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'.


Kontaktformular:

Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!

Die Erläuterungen zum Datenschutz habe ich gelesen und stimme diesen zu.

© 2003-2019 Jürgen Auer, Berlin.