Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Formatera en tidssträng.
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
);
Parameterar
strDest
Utdatasträng.
maxsize
Buffertens strDest storlek, mätt i tecken (char eller wchar_t).
format
Formatkontrollsträng.
timeptr
tm datastruktur.
locale
Språkvarianten som ska användas.
Returvärde
strftime returnerar antalet tecken som placeras i strDest och wcsftime returnerar motsvarande antal breda tecken.
Om det totala antalet tecken, inklusive avslutande null, är mer än maxsize, returnerar både strftime och wcsftime 0 och innehållet strDest i är obestämda.
Antalet tecken i strDest är lika med antalet literaltecken i formatplus alla tecken som kan läggas till format via formateringskoder. Avslutande null för en sträng räknas inte i returvärdet.
Anmärkningar
Funktionerna strftime och wcsftime formaterar tidsvärdet tm enligt timeptr det angivna format argumentet och lagrar resultatet i bufferten strDest. Som mest maxsize placeras tecken i strängen. En beskrivning av fälten timeptr i strukturen asctimefinns i .
wcsftime är wide-character motsvarigheten strftimetill . dess strängpekarargument pekar på en sträng med breda tecken. Dessa funktioner fungerar identiskt annars.
Den här funktionen validerar dess parametrar. Om strDest, format, eller timeptr är en null-pekare, eller om datastrukturen tm som hanteras av timeptr är ogiltig (till exempel om den innehåller värden för tid eller datum) eller om strängen innehåller en ogiltig formateringskod anropas den ogiltiga parameterhanteraren enligt beskrivningen format i Parameterverifiering. Om körningen tillåts fortsätta returnerar funktionen 0 och anger errno till EINVAL.
Som standard är den här funktionens globala tillstånd begränsat till programmet. Information om hur du ändrar det här beteendet finns i Globalt tillstånd i CRT.
Allmän textrutinmappning
TCHAR.H rutin |
_UNICODE och _MBCS inte definierat |
_MBCS definierad |
_UNICODE definierad |
|---|---|---|---|
_tcsftime |
strftime |
strftime |
wcsftime |
Argumentet format består av en eller flera koder. Som i printfföregås formateringskoderna av ett procenttecken (%). Tecken som inte börjar med % kopieras oförändrade till strDest. Kategorin LC_TIME för det aktuella nationella språket påverkar utdataformateringen strftimeför . Mer information om LC_TIMEfinns i setlocale. Funktionerna strftime och wcsftime använder för närvarande angivna nationella inställningar.
_wcsftime_l Och-versionerna _strftime_l av dessa funktioner är identiska förutom att de använder nationella inställningar som en parameter och använder det i stället för det aktuella nationella språket. Mer information finns i Nationella inställningar.
Funktionerna strftime stöder följande formateringskoder:
| Kod | Ersättningssträng |
|---|---|
%a |
Förkortat veckodagsnamn i språkvarianten |
%A |
Fullständigt veckodagsnamn i språkvarianten |
%b |
Förkortat månadsnamn i språkvarianten |
%B |
Fullständigt månadsnamn i språkvarianten |
%c |
Datum- och tidsrepresentation som är lämplig för nationella inställningar |
%C |
Året dividerat med 100 och trunkerat till ett heltal, som ett decimaltal (00−99) |
%d |
Dag i månaden som ett decimaltal (01–31) |
%D |
Motsvarar %m/%d/%y |
%e |
Dag i månaden som ett decimaltal (1–31), där ensiffriga tal föregås av ett blanksteg |
%F |
Motsvarar %Y-%m-%d |
%g |
De sista två siffrorna i DET ISO 8601 veckobaserade året som ett decimaltal (00–99) |
%G |
DET ISO 8601 veckobaserade året som decimaltal |
%h |
Förkortat månadsnamn (motsvarande %b) |
%H |
Timme i 24-timmarsformat (00–23) |
%I |
Timme i 12-timmarsformat (01–12) |
%j |
Dag på året som ett decimaltal (001–366) |
%m |
Månad som decimaltal (01–12) |
%M |
Minut som decimaltal (00–59) |
%n |
Ett nytt radtecken (\n) |
%p |
Språkvariantens A.M./P.M.-indikator för 12-timmarsklocka |
%r |
Språkvariantens 12-timmars klocktid |
%R |
Motsvarar %H:%M |
%S |
Sekund som decimaltal (00–59) |
%t |
Ett vågrätt fliktecken (\t) |
%T |
%H:%M:%SMotsvarar iso 8601-tidsformatet |
%u |
ISO 8601 veckodag som decimaltal (1–7; Måndag är 1) |
%U |
Årets veckonummer som decimaltal (00–53), där den första söndagen är den första dagen i vecka 1 |
%V |
ISO 8601-veckonummer som decimaltal (00–53) |
%w |
Veckodag som ett decimaltal (0–6; Söndag är 0) |
%W |
Årets veckonummer som ett decimaltal (00–53), där den första måndagen är den första dagen i vecka 1 |
%x |
Datumrepresentation för nationella inställningar |
%X |
Tidsrepresentation för nationella inställningar |
%y |
År utan århundrade, som decimaltal (00–99) |
%Y |
År med århundrade, som decimaltal |
%z |
Förskjutningen från UTC i ISO 8601-format; inga tecken om tidszonen är okänd |
%Z |
Antingen språkvariantens tidszonsnamn eller tidszonsförkortning, beroende på registerinställningar. inga tecken om tidszonen är okänd |
%% |
Procenttecken |
Precis som printf i funktionen # kan flaggan prefixa valfri formateringskod. I så fall ändras formatkodens betydelse enligt följande.
| Formatkod | Innebörd |
|---|---|
%#a, %#A, %#b, %#B, %#g, %#G, %#h, %#n, %#p, , %#t, %#u, %#w, %#X, %#z, , %#Z%#% |
# -flaggan ignoreras. |
%#c |
Lång datum- och tidsrepresentation, lämplig för nationella inställningar. Exempel: "Tisdag 14 mars 1995, 12:41:29". |
%#x |
Lång datumrepresentation, lämpligt för nationella inställningar. Exempel: "Tisdag 14 mars 1995". |
%#d, %#D, %#e, %#F, %#H, %#I, %#j, %#m, %#M, %#r, , %#R, %#S, %#T, %#U, %#V, , %#W, %#y%#Y |
Ta bort inledande nollor eller blanksteg (om det finns några). |
ISO 8601-veckan och det veckobaserade året som produceras av %V, %goch %G, använder en vecka som börjar på måndag. Vecka 1 är den vecka som innehåller den fjärde dagen i januari, vilket är den första veckan som omfattar minst fyra dagar på året. Om den första måndagen på året är den 2: a, 3: e eller 4: e, är de föregående dagarna en del av den sista veckan föregående år. För dessa dagar %V ersätts med 53 och båda %g och %G ersätts med siffrorna från föregående år.
Anmärkning
När du använder en av funktionerna strftime med en tm pekare som returneras från gmtime, kommer värdena som skrivs ut via %Z och %z -specificerarna inte att vara korrekta. Det beror på att structen tm som anges av C Standard inte innehåller informationen för tidszonsnamn eller förskjutning. I stället fylls tidszonsinformationen i via de globala variablerna _timezone och _dstbias.
Kravspecifikation
| Rutin | Obligatoriskt huvud |
|---|---|
strftime |
<time.h> |
wcsftime |
<time.h> eller <wchar.h> |
_strftime_l |
<time.h> |
_wcsftime_l |
<time.h> eller <wchar.h> |
Funktionerna _strftime_l och _wcsftime_l är Microsoft-specifika. Mer kompatibilitetsinformation finns i Kompatibilitet.
Exempel
Se exemplet för time.
Se även
regionala inställningar
Tidshantering
Strängmanipulering
localeconv
setlocale, _wsetlocale
strcoll funktioner
strxfrm, wcsxfrm, , _strxfrm_l_wcsxfrm_l