strftime
, wcsftime
, , _strftime_l
_wcsftime_l
Naformátuje časový řetězec.
Syntaxe
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
);
Parametry
strDest
Výstupní řetězec
maxsize
strDest
Velikost vyrovnávací paměti měřená v znaznachu (char
nebo wchar_t
).
format
Řetězec řízení formátu
timeptr
tm
struktura dat.
locale
Národní prostředí, které se má použít
Vrácená hodnota
strftime
vrátí počet znaků umístěných v strDest
a wcsftime
vrátí odpovídající počet širokých znaků.
Pokud celkový počet znaků, včetně ukončující hodnoty null, je větší než maxsize
, strftime
a wcsftime
vrátí hodnotu 0 a obsah strDest
jsou neurčité.
Počet znaků je strDest
roven počtu literálových znaků v format
, plus všechny znaky, které mohou být přidány prostřednictvím format
kódů formátování. Koncová hodnota null řetězce se nezapočítává do návratové hodnoty.
Poznámky
wcsftime
Funkce strftime
formátuje tm
časovou hodnotu podle timeptr
zadaného format
argumentu a uloží výsledek do vyrovnávací paměti strDest
. Ve většině případů maxsize
jsou znaky umístěné v řetězci. Popis polí ve struktuře timeptr
naleznete v tématu asctime
. wcsftime
je ekvivalent širokého znaku strftime
; jeho argument string-pointer odkazuje na řetězec širokého znaku. Tyto funkce se chovají stejně jinak.
Tato funkce ověří své parametry. Pokud strDest
, format
nebo timeptr
je null ukazatel, nebo pokud tm
datová struktura adresovaná timeptr
je neplatná (například pokud obsahuje hodnoty mimo rozsah pro čas nebo datum), nebo pokud format
řetězec obsahuje neplatný formátovací kód, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, vrátí funkce hodnotu 0 a nastaví errno
na EINVAL
hodnotu .
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
TCHAR.H rutina |
_UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_tcsftime |
strftime |
strftime |
wcsftime |
Argument format
se skládá z jednoho nebo více kódů; stejně jako v printf
, kódy formátování jsou před znakem procenta (%
). Znaky, které nezačínají %
, se zkopírují beze změny do strDest
. Kategorie LC_TIME
aktuálního národního prostředí má vliv na formátování výstupu strftime
. (Další informace naleznete v LC_TIME
tématu setlocale
.) wcsftime
Funkce strftime
používají aktuálně nastavené národní prostředí. _wcsftime_l
Verze _strftime_l
těchto funkcí jsou stejné s tím rozdílem, že přebírají národní prostředí jako parametr a používají se místo aktuálně nastaveného národního prostředí. Další informace naleznete v tématu Národní prostředí.
Funkce strftime
podporují tyto kódy formátování:
Kód | Náhradní řetězec |
---|---|
%a |
Zkrácený název dne v týdnu v národním prostředí |
%A |
Úplný název dne v týdnu v národním prostředí |
%b |
Zkrácený název měsíce v národním prostředí |
%B |
Úplný název měsíce v národním prostředí |
%c |
Reprezentace data a času vhodná pro národní prostředí |
%C |
Rok vydělený číslem 100 a zkrácený na celé číslo jako desetinné číslo (00−99) |
%d |
Den v měsíci jako desetinné číslo (01 –31) |
%D |
Ekvivalent k %m/%d/%y |
%e |
Den v měsíci jako desetinné číslo (1 – 31), kde jednociferné číslice předchází mezera |
%F |
Ekvivalent k %Y-%m-%d |
%g |
Posledních 2 číslic v roce podle iso 8601 v týdnu jako desetinné číslo (00 –99) |
%G |
Rok založený na týdnu iso 8601 jako desetinné číslo |
%h |
Zkrácený název měsíce (ekvivalentní %b ) |
%H |
Hodina ve formátu 24 hodin (00 –23) |
%I |
Hodina ve formátu 12 hodin (01 –12) |
%j |
Den v roce jako desetinné číslo (001 – 366) |
%m |
Měsíc jako desetinné číslo (01 –12) |
%M |
Minuta jako desetinné číslo (00 –59) |
%n |
Znak nového řádku (\n ) |
%p |
Indikátor národního prostředí A.M./P.M. pro 12hodinový formát |
%r |
12hodinový hodinový čas národního prostředí |
%R |
Ekvivalent k %H:%M |
%S |
Sekunda jako desetinné číslo (00 –59) |
%t |
Vodorovný znak tabulátoru (\t ) |
%T |
%H:%M:%S Ekvivalentní formátu iso 8601 |
%u |
ISO 8601 pracovní den jako desetinné číslo (1 - 7; Pondělí je 1) |
%U |
Číslo týdne v roce jako desetinné číslo (00 – 53), kde první neděle je první den týdne 1 |
%V |
Číslo týdne ISO 8601 jako desetinné číslo (00 –53) |
%w |
Den v týdnu jako desetinné číslo (0 – 6; Neděle je 0) |
%W |
Číslo týdne roku jako desetinné číslo (00 –53), kde první pondělí je první den týdne 1 |
%x |
Vyjádření data pro národní prostředí |
%X |
Časová reprezentace národního prostředí |
%y |
Rok bez století, jako desetinné číslo (00 – 99) |
%Y |
Rok se stoletím jako desetinné číslo |
%z |
Posun od UTC ve formátu ISO 8601; žádné znaky, pokud je časové pásmo neznámé |
%Z |
Buď název časového pásma národního prostředí, nebo zkratka časového pásma v závislosti na nastavení registru; žádné znaky, pokud je časové pásmo neznámé |
%% |
Znaménko procent |
Stejně jako ve printf
funkci může #
příznak předponovat jakýkoli kód formátování. V takovém případě se význam kódu formátu změní následujícím způsobem.
Formátování kódu | Význam |
---|---|
%#a , %#A , , , %#g %#G %#w %#X %#z %#B %#n %#Z %#h %#p %#t %#u %#b %#% |
# příznak je ignorován. |
%#c |
Dlouhé vyjádření data a času, vhodné pro národní prostředí. Příklad: "Úterý, 14. března 1995, 12:41:29". |
%#x |
Dlouhé vyjádření data, odpovídající národnímu prostředí. Příklad: "Úterý, březen 14, 1995". |
%#d , %#D , , %#e , %#F , %#I %#W %#H %#V %#U %#j %#T %#S %#M %#m %#r %#R , %#y %#Y |
Odeberte úvodní nuly nebo mezery (pokud existuje). |
Iso 8601 týden a týden založený rok vyrobený %V
společností , %g
a %G
, používá týden, který začíná v pondělí. Týden 1 je týden, který obsahuje čtvrtý den ledna, což je první týden, který zahrnuje alespoň čtyři dny v roce. Pokud je první pondělí v roce 2. , 3. nebo 4. den, jsou předchozí dny součástí posledního týdne předchozího roku. Pro tyto dny %V
se nahrazuje číslem 53 a obě %g
%G
a jsou nahrazeny číslicemi předchozího roku.
Poznámka:
Při použití jedné z strftime
funkcí s ukazatelem vráceným tm
z gmtime
, hodnoty vytištěné přes %Z
a %z
specifikátory nebudou přesné. Důvodem je to, že tm
struktura zadaná standardem C neobsahuje informace pro název časového pásma ani posun. Místo toho se informace o časovém pásmu naplní globálními proměnnými _timezone
a _dstbias
.
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
strftime |
<time.h> |
wcsftime |
<time.h> nebo <wchar.h> |
_strftime_l |
<time.h> |
_wcsftime_l |
<time.h> nebo <wchar.h> |
Funkce _strftime_l
a _wcsftime_l
funkce jsou specifické pro Microsoft. Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
Podívejte se na příklad pro time
.
Viz také
Národní prostředí
Správa času
Manipulace s řetězci
localeconv
setlocale
, _wsetlocale
strcoll
– funkce
strxfrm
, wcsxfrm
, , _strxfrm_l
_wcsxfrm_l