strftime, wcsftime, _strftime_l, _wcsftime_l

Formatieren einer Zeitzeichenfolge

Syntax

size_t strftime(
   char *strDest,
   size_t maxsize,
   const char *format,
   const struct tm *timeptr
);
size_t _strftime_l(
   char *strDest,
   size_t maxsize,
   const char *format,
   const struct tm *timeptr,
   _locale_t locale
);
size_t wcsftime(
   wchar_t *strDest,
   size_t maxsize,
   const wchar_t *format,
   const struct tm *timeptr
);
size_t _wcsftime_l(
   wchar_t *strDest,
   size_t maxsize,
   const wchar_t *format,
   const struct tm *timeptr,
   _locale_t locale
);

Parameter

strDest
Ausgabezeichenfolge.

maxsize
Größe des strDest-Puffers in Zeichen (char oder wchar_t).

format
Formatsteuerzeichenfolge.

timeptr
tm-Datenstruktur.

locale
Das zu verwendende Gebietsschema.

Rückgabewert

strftime gibt die Anzahl der in strDest platzierten Daten zurück, und wcsftime gibt die entsprechende Anzahl von Breitzeichen zurück.

Wenn die Gesamtzahl der Zeichen, einschließlich des abschließende NULL-Zeichens, größer als maxsize ist, geben strftime und wcsftime 0 zurück, und der Inhalt von strDest ist unbestimmt.

Die Anzahl von Zeichen in strDest ist gleich der Anzahl von Literalzeichen in format, sowie allen Zeichen, die über Formatierungscodes hinzugefügt format werden können. Das Beenden von NULL einer Zeichenfolge wird nicht im Rückgabewert gezählt.

Hinweise

Die strftime und wcsftime Funktionen formatieren den tm Zeitwert timeptr entsprechend dem angegebenen format Argument und speichern das Ergebnis im Puffer strDest. Höchstens maxsize Zeichen werden in die Zeichenfolge gestellt. Eine Beschreibung der Felder in der timeptr Struktur finden Sie unter asctime. wcsftime ist die Breitzeichenentsprechung von strftime; ihr Zeichenfolgenargument zeigt auf eine Breitzeichenfolge. Anderenfalls verhalten sich diese Funktionen identisch.

Diese Funktion überprüft ihre Parameter. Wenn strDestdie formattimeptrtm adressierte Datenstruktur timeptr ungültig ist (z. B. wenn sie außerhalb von Bereichswerten für die Uhrzeit oder das Datum enthält) oder wenn die format Zeichenfolge einen ungültigen Formatierungscode enthält, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, gibt die Funktion 0 zurück und stellt errno auf EINVAL ein.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

TCHAR.H Routine _UNICODE und _MBCS nicht definiert _MBCS Definiert _UNICODE Definiert
_tcsftime strftime strftime wcsftime

Das format-Argument besteht aus mindestens einem Code; wie in printf ist den Formatierungscodes ein Prozentzeichen (%) vorangestellt. Zeichen, mit % denen nicht begonnen wird, werden unverändert strDestkopiert. Die LC_TIME-Kategorie des aktuellen Gebietsschemas wirkt sich auf die Ausgabeformatierung von strftime aus. (Weitere Informationen LC_TIMEfinden Sie unter setlocale.) Die strftime Und wcsftime Funktionen verwenden das aktuell festgelegte Gebietsschema. Die Und _wcsftime_l Versionen _strftime_l dieser Funktionen sind identisch, mit der Ausnahme, dass sie das Gebietsschema als Parameter verwenden und anstelle des aktuell festgelegten Gebietsschemas verwenden. Weitere Informationen finden Sie unter Locale.

Die strftime Funktionen unterstützen diese Formatierungscodes:

Code Ersetzungszeichenfolge
%a Abgekürzter Wochentagsname im Gebietsschema
%A Vollständiger Wochentagsname im Gebietsschema
%b Abgekürzter Monatsname im Gebietsschema
%B Vollständiger Monatsname im Gebietsschema
%c Für das Gebietsschema geeignete Darstellung von Datum und Uhrzeit
%C Das Jahr dividiert durch 100 und wird als Dezimalzahl (00−99) auf eine ganze Zahl abgeschnitten.
%d Tag des Monats als Dezimalzahl (01 - 31)
%D Entspricht %m/%d/%y.
%e Tag des Monats als Dezimalzahl (1 - 31), wobei einstellige Ziffern einem Leerzeichen vorangestellt sind
%F Entspricht %Y-%m-%d.
%g Die letzten 2 Ziffern des wochenbasierten ISO 8601-Jahres als Dezimalzahl (00 - 99)
%G Das iso 8601-wochenbasierte Jahr als Dezimalzahl
%h Abgekürzter Monatsname (entspricht %b)
%H Stunde im 24-Stunden-Format (00 - 23)
%I Stunde im 12-Stunden-Format (01 - 12)
%j Tag des Jahres als Dezimalzahl (001 - 366)
%m Monat als Dezimalzahl (01 - 12)
%M Minute als Dezimalzahl (00 - 59)
%n Ein Zeilenumbruchzeichen (\n)
%p Der A.M./P.M.-Indikator des Gebietsschemas für 12-Stunden-Uhr
%r Die 12-Stunden-Uhrzeit des Gebietsschemas
%R Entspricht %H:%M.
%S Sekunde als Dezimalzahl (00 - 59)
%t Ein horizontales Tabstoppzeichen (\t)
%T %H:%M:%SEntspricht dem ISO 8601-Zeitformat
%u ISO 8601 Wochentag als Dezimalzahl (1 - 7; Montag ist 1)
%U Wochennummer des Jahres als Dezimalzahl (00 - 53), wobei der erste Sonntag der erste Tag der Woche 1 ist
%V ISO 8601-Wochenzahl als Dezimalzahl (00 - 53)
%w Wochentag als Dezimalzahl (0 - 6; Sonntag ist 0)
%W Wochennummer des Jahres als Dezimalzahl (00 - 53), wobei der erste Montag der erste Tag der Woche 1 ist
%x Datumsdarstellung für das Gebietsschema
%X Zeitdarstellung für das Gebietsschema
%y Jahr ohne Jahrhundert, als Dezimalzahl (00 - 99)
%Y Jahresangabe mit Jahrhundert als Dezimalzahl
%z Der Offset von UTC im ISO 8601-Format; keine Zeichen, wenn die Zeitzone unbekannt ist
%Z Entweder der Zeitzonenname oder die Zeitzonen-Abkürzung des Gebietsschemas, je nach Registrierungseinstellungen; keine Zeichen, wenn die Zeitzone unbekannt ist
%% Prozentzeichen (%)

Wie in der printf-Funktion, wird das #-Flag möglicherweise dem Formatierungscode vorangestellt. In diesem Fall wird die Bedeutung des Formatcodes wie folgt geändert.

Formatcode Bedeutung
%#a, %#A, %#b, %#B, %#g, %#G, %#h, %#n, %#p, %#t, %#u, %#w, %#X, %#z, %#Z, %#% #-Flag wird ignoriert.
%#c Lange Datums- und Uhrzeitdarstellung, die für das Gebietsschema geeignet ist. Beispiel: „Dienstag, 14. März 1995, 12:41:29“.
%#x Lange Datumsdarstellung, die für das Gebietsschema geeignet ist. Beispiel: „Dienstag, 14. März 1995“.
%#d, %#D, %#e, %#F, %#H, %#I, %#j, %#m, %#M, %#r, %#R, %#S, %#T, %#U, %#V, %#W, %#y, %#Y Entfernen Sie führende Nullen oder Leerzeichen (falls vorhanden).

Die ISO 8601-Woche und das wochenbasierte Jahr, das von %V, %gund %G, verwendet eine Woche, die am Montag beginnt. Woche 1 ist die Woche, die den vierten Januartag enthält, der die erste Woche ist, die mindestens vier Tage des Jahres enthält. Wenn der erste Montag des Jahres der 2., der 3. oder der 4. ist, sind die vorherigen Tage Teil der letzten Woche des vorhergehenden Jahres. Für diese Tage %V wird durch 53 ersetzt, und beide %g werden %G durch die Ziffern des vorherigen Jahres ersetzt.

Hinweis

Bei Verwendung einer der strftime Funktionen mit einem von einem tm zeiger zurückgegebenen gmtimeZeiger sind die werte, die über die %Z Bezeichner und %z Bezeichner gedruckt werden, nicht korrekt. Dies liegt daran, dass die tm durch den C Standard angegebene Struktur weder die Informationen für den Zeitzonennamen noch den Offset enthält. Stattdessen werden die Zeitzoneninformationen über die globalen Variablen _timezone und _dstbias.

Anforderungen

Routine Erforderlicher Header
strftime <time.h>
wcsftime <time.h> oder <wchar.h>
_strftime_l <time.h>
_wcsftime_l <time.h> oder <wchar.h>

Die _strftime_l Funktionen sind _wcsftime_l microsoftspezifisch. Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

Sehen Sie sich das Beispiel für time.

Siehe auch

Gebietsschema
Zeitverwaltung
Zeichenfolgenmanipulation
localeconv
setlocale, _wsetlocale
strcoll-Funktionen
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l