Syntax
intgettimeofday( Structčasový*mesto, Structčasové pásmo*tz)The gettimeofday () funkcia je definovaná v sys/čas.h hlavičkový súbor.
Argumenty
Táto funkcia má dva argumenty:
1svargument ukazuje na časový štruktúra. The časový štruktúra je deklarovaná nižšie v sys/čas.h hlavičkový súbor:
Structčasový{
time_t tv_sec; // používa sa niekoľko sekúnd
suseconds_t tv_usec; // používa sa na mikrosekundy
}
Štruktúra časovej štruktúry predstavuje kalendárny čas. Má dvoch členov:
- tv_sec : Je to počet sekúnd od epochy.
- tv_usec : Sú to ďalšie mikrosekundy po výpočte počtu sekúnd od epochy. .
2ndargument ukazuje na časové pásmo štruktúra. Normálne by mal byť nastavený na NULL, pretože štruktúrované časové pásmo je zastaraný. Tento argument je len pre spätnú kompatibilitu.
Návratové hodnoty
Pokiaľ ide o úspech, gettimeofday () vrátiť 0, v prípade zlyhania funkcia vráti -1.
Jednoduché získanie času a tlač
#zahrnúť#zahrnúť
intHlavná() {
Structtimeval current_time;
gettimeofday(&aktuálny čas,NULOVÝ);
printf ('sekúnd: %ld nmikrosekundy: %ld ',
aktuálny čas.tv_sec,aktuálny čas.tv_usec);
vrátiť sa 0;
}
Výkon:
Tu, sys/čas.h bol zahrnutý pre gettimeofday () funkcia a časová štruktúra. The gettimeofday () funkcia nastavuje čas v člene štruktúry timeval (current_time). tv_sec je integrálny počet sekúnd, ktoré uplynuli od začiatku súboru UNIXová epocha , o polnoci UTC 1. januára 1970 a tv_usec je ďalší počet mikrosekúnd, ktoré uplynuli od tv_sec. Ak spustíte program, mali by ste vidieť výstup. Pri každom spustení programu sa výstup zmení.
Chyba argumentu NULL
#zahrnúť#zahrnúť
intHlavná() {
Structtimeval current_time;
gettimeofday(NULOVÝ,NULOVÝ);
vrátiť sa 0;
}
Výkon:
V tomto prípade ukazuje prvý argument súboru gettimeofday () funkcia by nemala byť NULL. Upozornenie na kompiláciu príde, ak je prvý argument NULL.
Formátovanie príkladu aktuálneho času
#zahrnúť#zahrnúť
#zahrnúť
intHlavná() {
Structtimeval tv;
time_t t;
Structtm*Info;
charnárazník[64];
gettimeofday(&televízia,NULOVÝ);
t=televíziatv_sec;
Info= miestny čas (&t);
printf ('%s', asctime (Info));
strftime (nárazník, veľkosťnárazník, „Dnes je %A, %B %d. n',Info);
printf ('%s',nárazník);
strftime (nárazník, veľkosťnárazník, „Čas je %I: %M %p. n',Info);
printf ('%s',nárazník);
vrátiť sa 0;
}
Výkon:
V tomto prípade ukazuje, ako vytlačiť dátum a čas v inom formáte. Reprezentácia dátumov z návratovej hodnoty hodnoty nie je veľmi jednoduché gettimeofday () funkciu. Tu, miestny čas() a strftime () funkcie sa používajú na pekné zobrazenie návratovej hodnoty gettimeofday () .
The miestny čas() funkcia preberá argument, ktorý je odkazom na ukazovateľ súboru tv_sec oblasti štruktúrne časové obdobie a vráti odkaz na ukazovateľ a struct tm predmet.
The strftime () funkcia vygeneruje prispôsobený, formátovaný reťazec zobrazujúci dátum a čas z struct tm ukazovateľ. Na formátované zobrazenie sa používajú špecifikátory formátu. Napríklad formátovací reťazec%d-%m-%Y%H:%M:%S určuje dátum a čas v tomto formáte:
14. 04. 2020 13:09:42Nasledujú špecifikátory konverzie, ktoré možno použiť na formátované zobrazenie:
Špecifikátor | Význam |
%do | Skrátený názov dňa v týždni podľa súčasného národného nastavenia. |
%TO | Názov dňa v týždni podľa súčasného národného nastavenia. |
% b | Názov skráteného mesiaca podľa súčasného národného nastavenia. |
% B | Názov celého mesiaca podľa súčasného miestneho nastavenia. |
% c | Preferované zobrazenie dátumu a času pre súčasné miestne nastavenie. |
%d | Ako desatinné číslo pre deň v mesiaci (rozsah 01 - 31). |
%H | Použitie 24-hodinového (rozsah 00-23) až hodiny ako desatinného čísla. |
%I | Použité 12-hodinové (rozsah 00-23) až hodiny ako desatinné číslo. |
%j | Ako desatinné číslo pre deň v roku (rozsah 001-366). |
%m | Ako desatinné číslo za mesiac (rozsah 01 - 12). |
%M | Desatinné číslo minúty. |
%p | Na základe zadanej hodnoty času buď „am“ alebo „pm“ alebo ekvivalentných reťazcov pre aktuálne miestne nastavenie. |
%S | Desatinné číslo druhého. |
% X | Preferované zobrazenie dátumu pre aktuálne miestne nastavenie, ale bez času. |
% X | Preferované zobrazenie času pre aktuálne národné prostredie, ale bez dátumu. |
%a | Rok je desatinný, ale nie storočný (v rozmedzí od 00 - 99). |
%AND | Rok je desatinný vrátane storočia. |
%S | Časové pásmo. |
Použitie gettimeofday na meranie času spustenia programu
#zahrnúť#zahrnúť
intHlavná() {
Structčasový štart,koniec;
gettimeofday(&začať,NULOVÝ);
pre (inti= 0;i<1e5 ;i++) {
}
gettimeofday(&koniec,NULOVÝ);
printf („Čas potrebný na odpočítanie do 10^5 je: %ld mikro sekúnd n',
((koniec.tv_sec * 10 000 000 +koniec.tv_usec) -
(začať.tv_sec * 10 000 000 +začať.tv_usec)));
vrátiť sa 0;
}
Výkon:
Tento príklad ukazuje, že ako gettimeofday () Túto funkciu je možné použiť na výpočet času spustenia programu.
Záver
Týmto spôsobom sa gettimeofday () Túto funkciu je možné použiť v systéme Linux. Na prenos existujúceho kódu slúži prípona gettimeofday () funkcia môže byť použitá, ale v novom kóde by nemala byť použitá. clock_gettime () namiesto gettimeofday () .