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 strDest
die format
timeptr
tm
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. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
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 strDest
kopiert. Die LC_TIME
-Kategorie des aktuellen Gebietsschemas wirkt sich auf die Ausgabeformatierung von strftime
aus. (Weitere Informationen LC_TIME
finden 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:%S Entspricht 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 , %#p %#u %#z %#t %#X %#n %#w %#Z %#B %#g %#G %#h %#% |
# -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 , %#I %#j %#H , %#m , , %#V %#r %#S %#y %#R %#T %#U %#W %#M %#Y |
Entfernen Sie führende Nullen oder Leerzeichen (falls vorhanden). |
Die ISO 8601-Woche und das wochenbasierte Jahr, das von %V
, %g
und %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 gmtime
Zeiger 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
Ein Beispiel hierfür finden Sie unter time
.
Siehe auch
Gebietsschema
Zeitverwaltung
Zeichenfolgenbearbeitung
localeconv
setlocale
, _wsetlocale
strcoll
-Funktionen
strxfrm
, , wcsxfrm
_strxfrm_l
_wcsxfrm_l