Zum Formatieren des Datums verwenden wir die Funktion
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".
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 |