Синтаксис
int gettimeofday (struct timeval * tp, struct часовой пояс * tz)В gettimeofday () функция определена в система / время.час заголовочный файл.
Аргументы
Эта функция принимает два аргумента:
1ул аргумент указывает на время состав. В время структура объявлена как показано ниже в система / время.час заголовочный файл:
struct timevaltime_t tv_sec; // используется в течение секунд
suseconds_t tv_usec; // используется для микросекунд
Структура struct timeval представляет собой календарное время. Он состоит из двух членов:
- tv_sec : Это количество секунд с начала эпохи.
- tv_usec : Это дополнительные микросекунды после вычисления количества секунд с эпохи…
2nd аргумент указывает на часовой пояс состав. Обычно он должен быть установлен в NULL, потому что структура часового пояса устарело. Этот аргумент предназначен только для обратной совместимости.
Возвращаемые значения
В случае успеха gettimeofday () вернуть 0, в случае неудачи функция возвращает -1.
Просто найдите время и распечатайте
#включать#включать
int main ()
struct timeval current_time;
gettimeofday (& current_time, NULL);
printf ("секунды:% ld \ nмикросекунды:% ld",
Текущее время.tv_sec, current_time.tv_usec);
возврат 0;
Выход:
Здесь, система / время.час был включен для gettimeofday () функция и временная структура. В gettimeofday () функция устанавливает время в члене структуры timeval (current_time). tv_sec - это целое число секунд, прошедших с начала Эпоха UNIX, в полночь по всемирному координированному времени 1 января 1970 года, а tv_usec - это дополнительное количество микросекунд, прошедшее с tv_sec. Если вы запустите программу, вы должны увидеть результат. Каждый раз, когда вы запускаете программу, вывод будет меняться.
Ошибка аргумента NULL
#включать#включать
int main ()
struct timeval current_time;
gettimeofday (NULL, NULL);
возврат 0;
Выход:
В этом примере показан первый аргумент gettimeofday () функция не должна быть NULL. Предупреждение компиляции появится, если первый аргумент равен NULL.
Пример форматирования текущего времени
#включать#включать
#включать
int main ()
struct timeval tv;
time_t t;
struct tm * info;
char buffer [64];
gettimeofday (& tv, NULL);
t = телевизор.tv_sec;
информация = местное время (& t);
printf ("% s", asctime (информация));
strftime (buffer, sizeof buffer, "Сегодня% A,% B% d.\ n ", информация);
printf ("% s", буфер);
strftime (buffer, sizeof buffer, "Время% I:% M% p.\ n ", информация);
printf ("% s", буфер);
возврат 0;
Выход:
В этом примере показано, как распечатать дату и время в другом формате. Непросто представить даты из возвращаемого значения gettimeofday () функция . Здесь, местное время() а также strftime () функции используются для красивого представления возвращаемого значения gettimeofday ().
В местное время() функция принимает аргумент, который является ссылкой на указатель tv_sec поле struct timeval и возвращает ссылку на указатель struct tm объект.
В strftime () функция сгенерирует персонализированную отформатированную строку, показывающую дату и время из struct tm указатель. Спецификаторы формата используются для форматированного отображения. Например, строка формата «% d-% m-% Y% H:% M:% S» указывает дату и время в следующей форме:
14-04-2020 13:09:42Ниже приведены спецификаторы преобразования, которые могут использоваться для форматированного отображения:
Спецификатор | Имея в виду |
% а | Сокращенное название дня недели в соответствии с текущим языковым стандартом. |
% А | Название дня недели в соответствии с текущим языковым стандартом. |
% b | Сокращенное название месяца в соответствии с местными стандартами. |
% B | Название полного месяца в соответствии с текущим языковым стандартом. |
% c | Предпочтительное представление даты и времени для текущего языкового стандарта. |
% d | В виде десятичного числа для числа месяца (диапазон 01–31). |
%ЧАС | Использование 24-часового диапазона (от 00 до 23) до часа как десятичного числа. |
%Я | Использование 12-часового диапазона (от 00 до 23) до часа как десятичного числа. |
% j | В виде десятичного числа дня года (от 001 до 366). |
% m | В виде десятичного числа для месяца (диапазон 01–12). |
% M | Десятичное число минут. |
%п | В зависимости от указанного значения времени, либо «am», либо «pm», либо эквивалентные строки для текущего языкового стандарта. |
% S | Десятичное число секунды. |
%Икс | Предпочтительное представление даты для текущего языкового стандарта, но без времени. |
%ИКС | Предпочтительное представление времени для текущего языкового стандарта, но без даты. |
% y | Год является десятичным, но не веком (диапазон от 00 до 99). |
% Y | Год является десятичным, включая столетие. |
% Z | Часовой пояс. |
Использование gettimeofday для измерения времени выполнения программы
#включать#включать
int main ()
struct timeval начало, конец;
gettimeofday (& start, NULL);
для (int i = 0; i <1e5 ; i++)
gettimeofday (& конец, NULL);
printf ("Время, необходимое для подсчета до 10 ^ 5:% ld микросекунд \ n",
((конец.tv_sec * 1000000 + конец.tv_usec) -
(Начало.tv_sec * 1000000 + начало.tv_usec)));
возврат 0;
Выход:
Этот пример показывает, как gettimeofday () функция может использоваться для расчета времени выполнения программы.
Заключение
Таким образом, gettimeofday () функция может использоваться в Linux. Для переноса существующего кода gettimeofday () функция может использоваться, но в новом коде ее не следует использовать. clock_gettime () функция может использоваться вместо gettimeofday ().