Funkcia strftime () v C ++ prevádza zadaný dátum a čas z daného času kalendárneho času na viacbajtový reťazec znakov s nulovým zakončením podľa formátovacieho reťazca.
Funkcia strftime () je definovaná v hlavičkovom súbore.
strftime () prototyp
size_t strftime (char * str, size_t count, const char * format, const tm * time);
Funkcia strftime () má 4 argumenty: str, count, format a time.
Informácie o dátume a čase, na ktoré ukazuje čas, sa prevedú na viacbajtový znak s nulovým zakončením na základe hodnoty formátu a sú uložené v poli, na ktoré ukazuje str. Maximálny počet zapísaných bajtov je.
strftime () parametre
- str: Ukazovateľ na prvý prvok znakového poľa na uloženie výsledku.
- count: Maximálny počet bajtov na zápis.
- formát: Ukazovateľ na viacbajtový znakový reťazec zakončený nulou, ktorý určuje formát prevodu. Reťazec formátu pozostáva zo špecifikátora prevodu (začínajúceho na% a voliteľne nasledovaného znakom E alebo O) a ďalších bežných znakov.
Obyčajné znaky vrátane ukončovacieho prázdneho znaku sa skopírujú tak, ako to je, do výstupného reťazca. špecifikátory formátu strftime ()Špecifikátor konverzie Popis Použité polia % Napíše znak% n Píše znak nového riadku t Zapíše znak vodorovnej tabulátora Rok Y Píše 4 číslice roku, napr. 2011 tm_rok EY Píše 4 číslice roka v alternatívnom zastúpení miestneho nastavenia tm_rok r Zapisuje posledné 2 číslice roku, rozsah (00, 99) tm_rok Oy Zapíše posledné 2 číslice roka do alternatívneho zastúpenia miestneho nastavenia tm_rok Ey Píše rok ako posun od alternatívneho kalendárneho obdobia miestneho nastavenia% EC (podľa miestneho nastavenia) tm_rok C. Zapisuje prvé 2 číslice roku, rozsah (00,99) tm_rok ES Zapíše názov základného roku (obdobia) do alternatívneho znázornenia miestneho nastavenia, tm_rok G Píše ISO 8601 rok založený na týždňoch, tj rok, ktorý obsahuje zadaný týždeň. tm_year, tm_wday, tm_yday g Zapisuje posledné 2 číslice ISO 8601 roku založeného na týždni, tj roku, ktorý obsahuje zadaný týždeň (rozsah (00,99)). tm_year, tm_wday, tm_yday Mesiac b Píše skrátený názov mesiaca, napr. Jan tm_mon h Rovnako ako b tm_mon B Píše meno celého mesiaca, napr. Január tm_mon m Zapíše mesiac ako desatinné číslo, rozsah (01,12) tm_mon Om Píše mesiac pomocou alternatívneho číselného systému miestneho nastavenia tm_mon Týždeň U Píše týždeň v roku ako desatinné číslo od 00 do 53 (nedeľa je prvý deň v týždni) tm_year, tm_wday, tm_yday OU Píše týždeň v roku ako% U pomocou alternatívneho číselného systému tm_year, tm_wday, tm_yday Ž Píše týždeň v roku ako desatinné číslo od 00 do 53 (pondelok je prvý deň v týždni) tm_year, tm_wday, tm_yday OW Zapíše týždeň v roku ako% W pomocou alternatívneho číselného systému tm_year, tm_wday, tm_yday V. Píše ISO 8601 týždeň v roku (rozsah (01,53)). tm_year, tm_wday, tm_yday OV Zapíše týždeň v roku ako% V, pričom použije alternatívny numerický systém tm_year, tm_wday, tm_yday Deň v roku / mesiaci j Zapisuje deň v roku ako desatinné číslo, rozsah (001 366) tm_yday d Zapíše deň v mesiaci ako desatinné číslo, rozsah (01,31) tm_mday Od Zapíše deň v mesiaci, ako% d, pomocou alternatívneho číselného systému tm_mday e Zapisuje deň v mesiaci ako desatinné číslo, rozsah (1,31) tm_mday Oe Zapíše deň v mesiaci, ako% e, pomocou alternatívneho číselného systému tm_mday Deň v týždni a Píše skrátený názov dňa v týždni, napr. Pi (podľa miestneho nastavenia) tm_wday A Píše celé dni v týždni, napr. Piatok (závisí od miestneho nastavenia) tm_wday w Píše všedný deň ako desatinné číslo, rozsah (0-6) (nedeľa je 0) tm_wday Ou Píše všedný deň ako% w, pričom sa používa alternatívny numerický systém tm_wday u Píše všedný deň ako desatinné číslo, kde pondelok je 1 (formát ISO 8601), rozsah (1-7) tm_wday Ou Píše všedný deň ako% u, pričom sa používa alternatívny numerický systém tm_wday Hodina, minúta, sekunda H Píše hodinu ako desatinné číslo, rozsah (00,23) tm_hodina OH Zapíše hodinu ako% H pomocou alternatívneho číselného systému tm_hodina Ja Zapíše hodinu ako desatinné číslo, rozsah (01,12) tm_hodina OI Píše hodinu ako% I, pomocou alternatívneho číselného systému tm_hodina M Zapíše minútu ako desatinné číslo, rozsah (00,59) tm_min OM Zápis minúty ako o% M pomocou alternatívneho číselného systému tm_min S Sekunda sa zapíše ako desatinné číslo, rozsah (00,60) tm_sec OS Druhý zápis bude ako% S, pričom sa použije alternatívny numerický systém tm_sec Iné c Zapíše štandardný reťazec dátumu a času, napr. Ne 17.októbra 04:41:13 2010 (podľa miestneho nastavenia) všetko Ec Zapíše alternatívny reťazec dátumu a času miestneho nastavenia všetko X Zapíše lokalizované zastúpenie dátumu (závisí od miestneho nastavenia) všetko Pr Zapíše alternatívnu reprezentáciu dátumu miestneho nastavenia všetko X Zapisuje lokalizovanú časovú reprezentáciu (závisí od miestneho nastavenia) všetko EX Zapíše alternatívne časové znázornenie miestneho nastavenia všetko 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ý 12-hodinový čas tm_hour, tm_min, tm_sec R Ekvivalent k „% H:% M“ tm_hour, tm_min T Ekvivalent k „% H:% M:% S tm_hour, tm_min, tm_sec P Píše lokalizované dopoludnia alebo večer (podľa miestneho nastavenia) tm_hodina z zapisuje ofset od UTC vo formáte ISO 8601 (napr. -0545) alebo bez znakov, ak nie sú k dispozícii informácie o časovom pásme tm_isdst Z Zapíše názov alebo skratku časového pásma, alebo nič, ak informácie o časovom pásme nie sú k dispozícii (závisí od miestneho nastavenia) tm_isdst - čas: Informácie o dátume a čase, ktoré sa majú previesť.
strftime () Vrátená hodnota
- Pri úspechu funkcia strftime () vráti počet bajtov zapísaných do poľa znakov, na ktoré ukazuje str bez koncovky „ 0“.
- Ak bol počet dosiahnutý skôr, ako bolo možné uložiť celý reťazec, vráti sa 0 a obsah nie je definovaný.
Príklad: Ako funguje funkcia 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; )
Po spustení programu bude výstup:
Dnes je 21. apríla 2017 Aktuálny čas je 11:20:42