Sintaxe
int gettimeofday (struct timeval * tp, struct timezone * tz)O gettimeofday () função é definida em sys / tempo.h arquivo de cabeçalho.
Argumentos
Esta função leva dois argumentos:
O 1st argumento aponta para o timeval estrutura. O timeval estrutura é declarada como abaixo em sys / tempo.h arquivo de cabeçalho :
struct timevaltime_t tv_sec; // usado por segundos
suseconds_t tv_usec; // usado por microssegundos
A estrutura de struct timeval representa um tempo do calendário. Tem dois membros:
- tv_sec : É o número de segundos desde a época.
- tv_usec : São microssegundos adicionais após o cálculo do número de segundos desde a época ..
O 2WL argumento aponta para o fuso horário estrutura. Normalmente deve ser definido como NULL porque struct fuso horário é obsoleto. Este argumento é apenas para compatibilidade com versões anteriores.
Valores de retorno
Com sucesso, o gettimeofday () retorna 0, em caso de falha a função retorna -1.
Obtenha tempo e impressão simples
#incluir#incluir
int main ()
struct timeval current_time;
gettimeofday (& current_time, NULL);
printf ("segundos:% ld \ nmicro segundos:% ld",
hora atual.tv_sec, current_time.tv_usec);
return 0;
Resultado:
Aqui, sys / tempo.h foi incluído para gettimeofday () função e estrutura temporal. O gettimeofday () função definir a hora no membro da estrutura timeval (current_time). tv_sec é o número integral de segundos decorridos desde o início do Época do UNIX, à meia-noite UTC de 1º de janeiro de 1970 e tv_usec é o número adicional de microssegundos decorridos de tv_sec. Se você executar o programa, deverá ver a saída. Cada vez que você executa o programa, a saída mudará.
Erro de argumento NULL
#incluir#incluir
int main ()
struct timeval current_time;
gettimeofday (NULL, NULL);
return 0;
Resultado:
Neste exemplo mostra o primeiro argumento do gettimeofday () função não deve ser NULL. Um aviso de compilação virá se o primeiro argumento for NULL.
Exemplo de formatação de hora atual
#incluir#incluir
#incluir
int main ()
struct timeval tv;
time_t t;
struct tm * info;
buffer char [64];
gettimeofday (& tv, NULL);
t = tv.tv_sec;
info = localtime (& t);
printf ("% s", asctime (info));
strftime (buffer, sizeof buffer, "Hoje é% A,% B% d.\ n ", informações);
printf ("% s", buffer);
strftime (buffer, sizeof buffer, "A hora é% I:% M% p.\ n ", informações);
printf ("% s", buffer);
return 0;
Resultado:
Neste exemplo, mostra como imprimir data e hora em formatos diferentes. Não é muito fácil representar datas a partir do valor de retorno de gettimeofday () função . Aqui, horário local() e strftime () funções são usadas para representar bem o valor de retorno de gettimeofday ().
O horário local() função recebe um argumento, que é uma referência a um ponteiro do tv_sec Campo de struct timeval e retorna uma referência a um ponteiro de um struct tm objeto.
O strftime () função irá gerar uma string formatada personalizada mostrando a data e hora do struct tm ponteiro. Especificadores de formato são usados para exibição formatada. Por exemplo, a string de formato “% d-% m-% Y% H:% M:% S” especifica a data e a hora neste formato:
14-04-2020 13:09:42A seguir estão os especificadores de conversão, podem ser usados para exibição formatada:
Especificador | Significado |
%uma | O nome abreviado do dia da semana de acordo com o local atual. |
%UMA | O nome do dia da semana de acordo com o local atual. |
% b | Nome do mês abreviado de acordo com o local atual. |
% B | Nome do mês completo de acordo com a localidade atual. |
% c | A representação preferencial de data e hora para o local atual. |
% d | Como um número decimal para o dia do mês (intervalo 01 - 31). |
% H | Usando 24 horas (intervalo 00 - 23) para a hora como número decimal. |
%EU | Usando 12 horas (intervalo 00 - 23) para a hora como número decimal. |
% j | Como um número decimal para o dia do ano (intervalo 001-366). |
% m | Como um número decimal para o mês (intervalo 01 - 12). |
% M | O número decimal do minuto. |
% p | Com base no valor de tempo especificado, 'am' ou 'pm' ou as strings equivalentes para o local atual. |
% S | O número decimal do segundo. |
% x | Representação preferida da data para a localidade atual, mas sem hora. |
% X | Representação preferida da hora para a localidade atual, mas sem data. |
% y | O ano é decimal, mas nenhum século (faixa de 00 - 99). |
% Y | O ano é decimal incluindo o século. |
% Z | O fuso horário. |
Usando gettimeofday para medir o tempo de execução do programa
#incluir#incluir
int main ()
struct timeval start, end;
gettimeofday (& start, NULL);
para (int i = 0; i <1e5 ; i++)
gettimeofday (& end, NULL);
printf ("O tempo necessário para contar até 10 ^ 5 é:% ld micro segundos \ n",
((fim.tv_sec * 1000000 + fim.tv_usec) -
(começar.tv_sec * 1000000 + início.tv_usec)));
return 0;
Resultado:
Este exemplo mostra que como gettimeofday () função pode ser usada para o cálculo do tempo de execução de um programa.
Conclusão
Desta forma, o gettimeofday () função pode ser usada no Linux. Para portar o código existente, o gettimeofday () função pode ser usada, mas no novo código não deve ser usada. clock_gettime () função pode ser usada em vez de gettimeofday ().