Sintaksa
intgettimeofday( structvremenski*Grad, structVremenska zona*tz)The gettimeofday () funkcija definirana je u sys/vrijeme.h datoteku zaglavlja.
Argumenti
Ova funkcija ima dva argumenta:
1svargument ukazuje na vremenski struktura. The vremenski struktura je deklarirana kao dolje u sys/vrijeme.h datoteka zaglavlja:
structvremenski{
time_t tv_sec; // koristi se nekoliko sekundi
suseconds_t tv_usec; // koristi se za mikrosekunde
}
Strukturna vremenska struktura predstavlja kalendarsko vrijeme. Ima dva člana:
- tv_sec : To je broj sekundi od epohe.
- tv_usec : To je dodatnih mikrosekundi nakon izračuna broja sekundi od epohe. .
2ndargument ukazuje na Vremenska zona struktura. Normalno bi ga trebalo postaviti na NULL jer strukturna vremenska zona je zastario. Ovaj argument služi samo za kompatibilnost unatrag.
Povratne vrijednosti
O uspjehu, gettimeofday () return 0, za neuspjeh funkcija vraća -1.
Jednostavno Get Time and Print
#uključi#uključi
intglavni() {
structtimeval current_time;
gettimeofday(&Trenutno vrijeme,NULL);
printf ('sekundi: %ld nmikro sekundi: %ld ',
Trenutno vrijeme.tv_sec,Trenutno vrijeme.tv_usec);
povratak 0;
}
Izlaz:
Ovdje, sys/vrijeme.h uključeno je za gettimeofday () funkcija i vremenska struktura. The gettimeofday () funkcija postavlja vrijeme u timeval (current_time) članu strukture. tv_sec je integralni broj sekundi proteklih od početka UNIX epoha , u ponoć UTC 1. siječnja 1970. i tv_usec je dodatni broj mikrosekundi protekao od tv_sec. Ako pokrenete program, trebali biste vidjeti izlaz. Svaki put kada pokrenete program, izlaz će se promijeniti.
NULL Greška u argumentu
#uključi#uključi
intglavni() {
structtimeval current_time;
gettimeofday(NULL,NULL);
povratak 0;
}
Izlaz:
U ovom primjeru prikazan je prvi argument gettimeofday () funkcija ne smije biti NULL. Upozorenje o kompilaciji doći će ako je prvi argument NULL.
Primjer oblikovanja trenutnog vremena
#uključi#uključi
#uključi
intglavni() {
structtimeval tv;
vrijeme_t t;
structtm*info;
charpufer[64];
gettimeofday(&televizor,NULL);
t=televizor.tv_sec;
info= lokalno vrijeme (&t);
printf ('%s', asctime (info));
strftime (pufer, veličinapufer, 'Danas je %A, %B %d. n',info);
printf ('%s',pufer);
strftime (pufer, veličinapufer, 'Vrijeme je %I: %M %p. n',info);
printf ('%s',pufer);
povratak 0;
}
Izlaz:
U ovom primjeru prikazano je kako ispisati datum i vrijeme u drugom formatu. Nije lako predstaviti datume od povratne vrijednosti gettimeofday () funkciju. Ovdje, lokalno vrijeme() i strftime () funkcije koriste se za lijepo predstavljanje vraćene vrijednosti gettimeofday () .
The lokalno vrijeme() funkcija uzima argument, koji je referenca na pokazivač na tv_sec polje od struct timeval i vraća referencu na pokazivač a struct tm objekt.
The strftime () funkcija generirat će prilagođeni, formatirani niz koji prikazuje datum i vrijeme od struct tm pokazivač. Specifikatori formata koriste se za formatirani prikaz. Na primjer, format niza%d-%m-%Y%H:%M:%S navodi datum i vrijeme u ovom obliku:
14.04.2020 13:09:42Slijede specifikatori pretvorbe koji se mogu koristiti za formatirani prikaz:
Specifikator | Značenje |
%do | Skraćeni naziv radnog dana prema sadašnjem jeziku. |
%DO | Naziv radnog dana prema trenutnom jeziku. |
% b | Naziv skraćenog mjeseca prema trenutnom jeziku. |
% B | Naziv cijelog mjeseca prema sadašnjem jeziku. |
% c | Poželjni prikaz datuma i vremena za trenutno područje. |
%d | Kao decimalni broj za dan u mjesecu (raspon 01 - 31). |
%H | Korištenje 24 sata (raspon 00-23) do sata kao decimalnog broja. |
%I | Koristeći 12 sati (raspon 00-23) do sata kao decimalni broj. |
%j | Kao decimalni broj za dan u godini (raspon 001-366). |
%m | Kao decimalni broj za mjesec (raspon 01 - 12). |
%M | Decimalni broj minute. |
%str | Na temelju navedene vrijednosti vremena, ili 'am' ili 'pm' ili ekvivalentni nizovi za trenutnu lokalizaciju. |
%S | Decimalni broj druge. |
% x | Poželjni prikaz datuma za trenutnu lokalizaciju, ali bez vremena. |
% X | Poželjni prikaz vremena za trenutnu lokalizaciju, ali bez datuma. |
%i | Godina je decimalna, ali nema stoljeća (raspon od 00 - 99). |
%I | Godina je decimalna uključujući i stoljeće. |
%S | Vremenska zona. |
Korištenje gettimeofday za mjerenje vremena izvođenja programa
#uključi#uključi
intglavni() {
structvremenski početak,kraj;
gettimeofday(&početak,NULL);
za (inti= 0;i<1e5 ;i++) {
}
gettimeofday(&kraj,NULL);
printf ('Vrijeme potrebno za brojanje do 10^5 je: %ld mikro sekundi n',
((kraj.tv_sec * 1000000 +kraj.tv_usec) -
(početak.tv_sec * 1000000 +početak.tv_usec)));
povratak 0;
}
Izlaz:
Ovaj primjer pokazuje kako gettimeofday () funkcija se može koristiti za izračunavanje vremena izvođenja programa.
Zaključak
Na ovaj način, gettimeofday () funkcija se može koristiti u Linuxu. Za prijenos postojećeg koda, gettimeofday () funkcija se može koristiti, ali se u novom kodu ne smije koristiti. clock_gettime () funkcija se može koristiti umjesto gettimeofday () .