Funkce strftime () v C ++ převede zadané datum a čas z daného času v kalendáři na vícebajtový řetězec znaků zakončený hodnotou null podle formátovacího řetězce.
Funkce strftime () je definována v hlavičkovém souboru.
strftime () prototyp
size_t strftime (char * str, size_t count, const char * format, const tm * time);
Funkce strftime () má 4 argumenty: str, count, format a time.
Informace o datu a čase, na které ukazuje čas, jsou převedeny na vícebajtový znak s nulovým zakončením na základě hodnoty formátu a jsou uloženy v poli, na které ukazuje str. Je zapsáno nanejvýš počet bajtů.
strftime () parametry
- str: Ukazatel na první prvek pole znaků pro uložení výsledku.
- count: Maximální počet bajtů pro zápis.
- format: Ukazatel na vícebajtový řetězec znaků s nulovým zakončením určující formát převodu. Řetězec formátu se skládá ze specifikátoru převodu (začínajícího% a volitelně následovaného E nebo O) a dalších běžných znaků.
Obyčejné znaky včetně zakončovacího nulového znaku jsou zkopírovány tak, jak jsou, do výstupního řetězce. specifikátory formátu strftime ()Specifikátor převodu Popis Použitá pole % Zapíše znak% n Zapíše znak nového řádku t Zapíše znak vodorovné karty Rok Y Zapíše 4 číslice roku, např. 2011 tm_rok EY Zapíše 4 číslice roku v alternativním vyjádření národního prostředí tm_rok y Zapíše poslední 2 číslice roku, rozsah (00, 99) tm_rok Dobře Zapíše poslední 2 číslice roku do alternativního vyjádření národního prostředí tm_rok Ey Zapíše rok jako posun od alternativního kalendářního období národního prostředí% EC (podle národního prostředí) tm_rok C Zapíše první 2 číslice roku, rozsah (00,99) tm_rok ES Zapíše název základního roku (období) do alternativního znázornění národního prostředí, tm_rok G Píše ISO 8601 týdenní rok, tj. Rok, který obsahuje zadaný týden. tm_year, tm_wday, tm_yday G Zapíše poslední 2 číslice roku založeného na ISO 8601 za týden, tj. Rok, který obsahuje zadaný týden (rozsah (00,99)). tm_year, tm_wday, tm_yday Měsíc b Píše zkrácený název měsíce, např. Jan tm_mon h Stejné jako b tm_mon B Píše celé jméno měsíce, např. Leden tm_mon m Zapíše měsíc jako desetinné číslo, rozsah (01,12) tm_mon Om Zapisuje měsíc pomocí alternativního numerického systému národního prostředí tm_mon Týden U Píše týden v roce jako desetinné číslo od 00 do 53 (neděle je první den v týdnu) tm_year, tm_wday, tm_yday OU Zapíše týden v roce jako% U pomocí alternativního numerického systému tm_year, tm_wday, tm_yday Ž Píše týden v roce jako desetinné číslo od 00 do 53 (pondělí je první den v týdnu) tm_year, tm_wday, tm_yday OW Zapíše týden v roce jako% W pomocí alternativního numerického systému tm_year, tm_wday, tm_yday PROTI Píše ISO 8601 týden v roce (rozsah (01,53)). tm_year, tm_wday, tm_yday OV Zapíše týden v roce jako% V pomocí alternativního numerického systému tm_year, tm_wday, tm_yday Den v roce / měsíc j Zapíše den v roce jako desetinné číslo, rozsah (001 366) tm_yday d Zapíše den v měsíci jako desetinné číslo, rozsah (01,31) tm_mday Od Zapíše den v měsíci jako% d pomocí alternativního číselného systému tm_mday E Zapíše den v měsíci jako desetinné číslo, rozsah (1,31) tm_mday Oe Zapíše den v měsíci jako% e pomocí alternativního numerického systému tm_mday Den v týdnu A Zapíše zkrácený název dne v týdnu, např. Pá (podle národního prostředí) tm_wday A Píše celý den v týdnu, např. Pátek (podle národního prostředí) tm_wday w Zapíše den v týdnu jako desetinné číslo, rozsah (0-6) (neděle je 0) tm_wday Ou Zapíše den v týdnu jako% w, pomocí alternativního numerického systému tm_wday u Zapíše den v týdnu jako desetinné číslo, kde pondělí je 1 (formát ISO 8601), rozsah (1-7) tm_wday Ou Zapíše den v týdnu jako% u pomocí alternativní numerické soustavy tm_wday Hodina, minuta, sekunda H Zapíše hodinu jako desetinné číslo, rozsah (00,23) tm_hodina ACH Zapíše hodinu jako% H pomocí alternativního numerického systému tm_hodina Já Zapíše hodinu jako desetinné číslo, rozsah (01,12) tm_hodina OI Zapíše hodinu jako% I pomocí alternativního numerického systému tm_hodina M Zapíše minutu jako desetinné číslo, rozsah (00,59) tm_min OM Zapíše minutu jako% M, pomocí alternativního číselného systému tm_min S Zapíše druhé jako desetinné číslo, rozsah (00,60) tm_sec OS Zapisuje druhý jako% S pomocí alternativního numerického systému tm_sec jiný C Zapíše standardní řetězec data a času, např. Ne 17. října 04:41:13 2010 (podle národního prostředí) Všechno Ec Zapíše alternativní řetězec data a času národního prostředí Všechno X Zapíše lokalizovanou reprezentaci data (podle národního prostředí) Všechno Př Zapíše národní reprezentaci data podle data Všechno X Zapíše lokalizovanou časovou reprezentaci (podle národního prostředí) Všechno EX Zapíše alternativní časovou reprezentaci národního prostředí Všechno D Ekvivalent k „% m /% d /% y“ tm_mon, tm_mday, tm_year F Ekvivalent k „% Y-% m-% d“ tm_mon, tm_mday, tm_year r Píše lokalizovaný 12hodinový čas tm_hour, tm_min, tm_sec R Ekvivalent k „% H:% M“ tm_hodina, tm_min T Ekvivalent k „% H:% M:% S tm_hour, tm_min, tm_sec P Zapisuje lokalizované dopoledne nebo odpoledne (podle národního prostředí) tm_hodina z zapisuje offset od UTC ve formátu ISO 8601 (např. -0545), nebo žádné znaky, pokud nejsou k dispozici informace o časovém pásmu tm_isdst Z Zapíše název nebo zkratku časového pásma, nebo nic, pokud informace o časovém pásmu nejsou k dispozici (podle národního prostředí) tm_isdst - čas: informace o datu a čase, které se mají převést.
strftime () Návratová hodnota
- Při úspěchu vrátí funkce strftime () počet bytů zapsaných do pole znaků, na které ukazuje str bez koncovky ' 0'.
- Pokud bylo dosaženo počtu před uložením celého řetězce, je vrácena 0 a obsah není definován.
Příklad: Jak funguje funkce strftime ()?
#include #include using namespace std; int main() ( time_t curr_time; tm * curr_tm; char date_string(100); char time_string(100); time(&curr_time); curr_tm = localtime(&curr_time); strftime(date_string, 50, "Today is %B %d, %Y", curr_tm); strftime(time_string, 50, "Current time is %T", curr_tm); cout << date_string << endl; cout << time_string << endl; return 0; )
Když spustíte program, výstup bude:
Dnes je 21. dubna 2017 Aktuální čas je 11:20:42