Die GetDateFormat-Funktion


Zum Formatieren des Datums verwenden wir die Funktion GetDateFormat. Wie auch bei "GetTimeFormat" bestimmt der erste Parameter das Format:

GetDateFormat(LOCALE_USER_DEFAULT,

Der zweite Parameter definiert wieder Flags. Dieser Wert muss allerdings Null sein, wenn der Formatstring (dazu gleich) benutzt wird. Im Beispiel habe ich mich für

  DATE_SHORTDATE,

entschieden, was dem kurzen Datumsformat aus den Ländereinstellungen entspricht. Es ließe sich auch DATE_LONGDATE benutzen, was logischerweise dem langen Datumsformat entspricht. MSDN und PSDK enthalten weitere Parameter, wobei zu beachten ist, dass sich einige gegenseitig ausschließen und nicht gemeinsam verwendet werden sollten.

Der dritte Parameter ist auch hier ein Zeiger auf die TSystemTime-Variable, die das Datum enthält. Wenn Sie ihn auf nil setzen, wird das aktuelle Datum herangezogen

  nil

Der Formatstring an vierter Stelle bleibt in unserem Fall wieder leer, da wir ja die Formatierung des Systems nutzen wollen

  nil,

An letzter Stelle stehen ebenfalls wieder ein Puffer (Char-Array) und dessen Länge

  buf,
  sizeof(buf))


Im Fehlerfall liefert die Funktion ebenfalls Null zurück, und über "GetLastError" lässt sich wieder der Grund dafür herausfinden. Im Erfolgsfall wird der übergebene Puffer mit dem formatierten Datumsstring gefüllt, und die Funktion gibt die Anzahl der kopierten Zeichen (inkl. #0) zurück.

Wenn Sie auch hierbei ein dynamisches Array nutzen wollen, gilt das gleiche wie bei der Funktion "GetTimeFormat".


Formatstring selbst definieren

Auch hier lässt sich die Systemeinstellung durch einen eigenen Formatstring umgehen. Dazu müssen Sie allerdings zuerst die Flags auf Null setzen, dann können Sie die eigene Formatierung verwenden:

GetDateFormat(LOCALE_USER_DEFAULT,
  0,                    // Flags
  nil,
  'ddd'','' MMM dd yy', // Formatstring
  buf,
  sizeof(buf))

Das Ergebnis wäre in diesem Fall:

Sa, Nov 30 02
Symbol Bedeutung
d einstellige Tagesanzeige
dd zweistellige Tagesanzeige
ddd der Name des Tages wird in Kurzform angezeigt, etwa "Mo" für Montag, usw.
dddd der Name des Tages wird angezeigt
M einstellige Monatsanzeige
MM zweistellige Monatsanzeige
MMM der Monatsname wird in Kurzform angezeigt, etwa "Jan" für Januar, usw.
MMMM der Name des Monats wird angezeigt
y einstellige Jahresanzeige
yy zweistellige Jahresanzeige
yyyy vierstellige Jahresanzeige