Syntax
intgettimeofday( strukturtid*stad, strukturtidszon*tz)De gettimeofday () funktion definieras i sys/time.h rubrikfil.
Argument
Denna funktion tar två argument:
Den 1stargumentet pekar på tid strukturera. De tid strukturen deklareras enligt nedan i sys/time.h rubrikfil:
strukturtid{
time_t tv_sec; // används i sekunder
suseconds_t tv_usec; // används för mikrosekunder
}
Tidsstrukturen struct representerar en kalendertid. Den har två medlemmar:
- tv_sec : Det är antalet sekunder sedan epoken.
- tv_usec : Det är ytterligare mikrosekunder efter antal sekunders beräkning sedan epoken. .
Den 2ndargumentet pekar på tidszon strukturera. Det bör normalt sättas till NULL eftersom struct tidszon är föråldrad. Detta argument är endast för bakåtkompatibilitet.
Returvärden
På framgång, gettimeofday () return 0, för fel returnerar funktionen -1.
Enkelt Få tid och skriv ut
#omfatta#omfatta
inthuvud() {
strukturtidsvärde aktuell_tid;
gettimeofday(&aktuell tid,NULL);
printf ('sekunder: %ld nmikrosekunder: %ld ',
aktuell tid.tv_sec,aktuell tid.tv_usec);
lämna tillbaka 0;
}
Produktion:
Här, sys/time.h har ingått för gettimeofday () funktion och tidsstruktur. De gettimeofday () funktion ställa in tiden i tidsmeddelande (aktuell_tid) strukturmedlem. tv_sec är det integrerade antalet sekunder som har gått sedan starten av UNIX -epok , vid midnatt UTC den 1 januari 1970 och tv_usec är ytterligare antal mikrosekunder som förflutit från tv_sec. Om du kör programmet bör du se utdata. Varje gång du kör programmet kommer utgången att ändras.
NULL Argumentfel
#omfatta#omfatta
inthuvud() {
strukturtidsvärde aktuell_tid;
gettimeofday(NULL,NULL);
lämna tillbaka 0;
}
Produktion:
I detta exempel visar det första argumentet i gettimeofday () funktionen ska inte vara NULL. Sammanställningsvarning kommer om det första argumentet är NULL.
Formatera aktuell tid Exempel
#omfatta#omfatta
#omfatta
inthuvud() {
strukturtv -tid;
time_t t;
strukturtm*info;
rödingbuffert[64];
gettimeofday(&tv,NULL);
t=tv.tv_sec;
info= lokal tid (&t);
printf ('%s', när som helst (info));
strftime (buffert, storlek avbuffert, 'Idag är %A, %B %d. n',info);
printf ('%s',buffert);
strftime (buffert, storlek avbuffert, 'Tiden är %I: %M %p. n',info);
printf ('%s',buffert);
lämna tillbaka 0;
}
Produktion:
I det här exemplet visas hur du skriver ut datum och tid i olika format. Det är inte särskilt lätt att representera datum från returvärdet på gettimeofday () funktion. Här, lokal tid() och strftime () funktioner används för att snyggt representera returvärdet för gettimeofday () .
De lokal tid() funktion tar ett argument, som är en referens till en pekare på tv_sec fält av struct tid och returnerar en referens till en pekare på a struct tm objekt.
De strftime () funktion genererar en anpassad, formaterad sträng som visar datum och tid från struct tm pekare. Formatspecifikatorer används för formaterad visning. Till exempel anger formatsträngen%d-%m-%Y%H:%M:%S datum och tid i detta formulär:
2020-04-14 13:09:42Följande är konverteringsspecifikatörerna, kan användas för formaterad visning:
Specifier | Menande |
%till | Veckodagens förkortade namn enligt nuvarande språk. |
%TILL | Veckodagens namn enligt nuvarande språk. |
% b | Namn på den förkortade månaden enligt nuvarande språk. |
% B | Namn på hela månaden enligt nuvarande språk. |
% c | Den föredragna representationen av datum och tid för nuvarande språk. |
%d | Som ett decimaltal för månadens dag (intervall 01 - 31). |
%H | Använda 24 timmar (intervall 00-23) till timmen som decimaltal. |
%I | Använda 12 timmar (intervall 00-23) till timmen som decimaltal. |
%j | Som ett decimaltal för årets dag (intervall 001-366). |
%m | Som decimaltal för månaden (intervall 01 - 12). |
%M | Minuttals decimaltal. |
%p | Baserat på det angivna tidsvärdet, antingen 'am' eller 'pm' eller motsvarande strängar för den aktuella platsen. |
%S | Det andra decimaltalet. |
% x | Föredragen representation av datumet för den aktuella platsen, men utan tid. |
% X | Föredragen representation av tiden för den aktuella platsen, men utan datum. |
%och | Året är decimalt men inget sekel (varierar från 00 - 99). |
%OCH | Året är decimaltal inklusive sekel. |
%MED | Tidszonen. |
Använda gettimeofday för att mäta programkörningstid
#omfatta#omfatta
inthuvud() {
strukturtidsbegränsad start,slutet;
gettimeofday(&Start,NULL);
för (inti= 0;i<1e5 ;i++) {
}
gettimeofday(&slutet,NULL);
printf ('Tiden det tar att räkna till 10^5 är: %ld mikrosekunder n',
((slutet.tv_sec * 1000000 +slutet.tv_usec) -
(Start.tv_sec * 1000000 +Start.tv_usec)));
lämna tillbaka 0;
}
Produktion:
Detta exempel visar hur gettimeofday () funktion kan användas för beräkning av körningstid för ett program.
Slutsats
På detta sätt, gettimeofday () funktion kan användas i Linux. För att överföra befintlig kod, gettimeofday () funktionen kan användas men i ny kod ska den inte användas. clock_gettime () funktionen kan användas istället för gettimeofday () .