Како користити функцију геттимеофдаи на језику Ц?

How Use Gettimeofday Function C Language



Тхе геттимеофдаи () функција добија системско време. Тренутно време се изражава у протеклим секундама и микросекундама од 00:00:00, 1. јануара 1970. (Уник епоха). У овом чланку ћемо вам показати како се користи геттимеофдаи () функција у Линуку. Дакле, почнимо.

Синтакса

интгеттимеофдаи( струцттимевал*град, струцтВременска зона*тз)

Тхе геттимеофдаи () функција је дефинисана у сис/тиме.х заглавна датотека.







Аргументс

Ова функција има два аргумента:



1старгумент указује на тимевал структура. Тхе тимевал структура је декларисана као доле у сис/тиме.х заглавна датотека:



струцттимевал{
тиме_т тв_сец; // користи се секундама
сусецондс_т тв_усец; // користи се за микросекунде
}

Структурна временска структура представља календарско време. Има два члана:





  • тв_сец : То је број секунди од епохе.
  • тв_усец : То је додатних микросекунди након прорачуна броја секунди од епохе. .

2ндаргумент указује на Временска зона структура. Обично би требало да буде НУЛЛ јер струцт тимезоне је застарео. Овај аргумент служи само за компатибилност уназад.

Повратне вредности

О успеху, геттимеофдаи () ретурн 0, за неуспех функција враћа -1.



Једноставно Гет Тиме анд Принт

#инцлуде
#инцлуде

интглавни() {
струцттимевал цуррент_тиме;
геттимеофдаи(&тренутно време,НУЛА);
принтф ('секунди: %лд нмикро секунди: %лд ',
тренутно време.тв_сец,тренутно време.тв_усец);

повратак 0;
}

Излаз:

Овде, сис/тиме.х укључено је за геттимеофдаи () функција и временска структура. Тхе геттимеофдаи () функција поставља време у члану структуре тимевал (цуррент_тиме). тв_сец је интегрални број секунди протеклих од почетка УНИКС епоха , у поноћ УТЦ 1. јануара 1970. и тв_усец је додатни број микросекунди протекао од тв_сец. Ако покренете програм, требало би да видите излаз. Сваки пут када покренете програм излаз ће се мењати.

Грешка у аргументу НУЛЛ

#инцлуде
#инцлуде

интглавни() {

струцттимевал цуррент_тиме;
геттимеофдаи(НУЛА,НУЛА);
повратак 0;
}

Излаз:

У овом примеру приказан је први аргумент геттимеофдаи () функција не би требало да буде НУЛЛ. Упозорење о компилацији ће се појавити ако је први аргумент НУЛЛ.

Пример форматирања тренутног времена

#инцлуде
#инцлуде
#инцлуде

интглавни() {
струцттимевал тв;
тиме_т т;
струцттм*инфо;
цхартампон[64];

геттимеофдаи(&ТВ,НУЛА);
т=ТВ.тв_сец;

инфо= Локално време (&т);
принтф ('%с', асцтиме (инфо));
стрфтиме (тампон, величинатампон, 'Данас је %А, %Б %д. н',инфо);
принтф ('%с',тампон);
стрфтиме (тампон, величинатампон, 'Време је %И: %М %п. н',инфо);
принтф ('%с',тампон);

повратак 0;
}

Излаз:

У овом примеру приказано је како штампати датум и време у другом формату. Није лако представити датуме од повратне вредности геттимеофдаи () функција. Овде, Локално време() и стрфтиме () функције се користе за лепо представљање враћене вредности геттимеофдаи () .

Тхе Локално време() функција узима аргумент, који је референца на показивач на тв_сец поље струцт тимевал и враћа референцу на показивач а струцт тм објекат.

Тхе стрфтиме () функција ће генерисати персонализовани, форматирани низ који приказује датум и време од струцт тм показивач. Спецификатори формата се користе за форматирани приказ. На пример, формат формат%д-%м-%И%Х:%М:%С наводи датум и време у овом облику:

04-14-2020 13:09:42

Следе спецификатори конверзије који се могу користити за форматирани приказ:

Спецификатор Значење
%до Скраћени назив дана у недељи према тренутној локацији.
%ДО Назив радног дана према тренутној локацији.
% б Назив скраћеног месеца према тренутној локацији.
% Б Назив целог месеца према тренутној локацији.
% ц Пожељни приказ датума и времена за тренутну локализацију.
Као децимални број за дан у месецу (опсег 01 - 31).
Користећи 24 сата (распон 00-23) до сата као децимални број.
Користећи 12 сати (опсег 00-23) до сата као децимални број.
Као децимални број за дан у години (опсег 001-366).
Као децимални број за месец (опсег 01 - 12).
Децимални број минута.
%п На основу наведене временске вредности, „ам“ или „пм“ или еквивалентни низови за тренутну локализацију.
Децимални број другог.
% Икс Пожељно представљање датума за тренутну локализацију, али без времена.
% ИКС Пожељно представљање времена за тренутну локализацију, али без датума.
Година је децимална, али нема века (у распону од 00 - 99).
Година је децимална, укључујући век.
%ВИТХ Временска зона.

Коришћење геттимеофдаи за мерење времена извршавања програма

#инцлуде
#инцлуде

интглавни() {

струцтвременски почетак,крај;
геттимеофдаи(&почетак,НУЛА);

за (инти= 0;и<1е5 ;и++) {
}

геттимеофдаи(&крај,НУЛА);
принтф ('Време потребно за бројање до 10^5 је: %лд микро секунди н',
((крај.тв_сец * 1000000 +крај.тв_усец) -
(почетак.тв_сец * 1000000 +почетак.тв_усец)));

повратак 0;
}

Излаз:

Овај пример показује како геттимеофдаи () функција се може користити за израчунавање времена извршавања програма.

Закључак

На овај начин, геттимеофдаи () функција се може користити у Линуку. За пренос постојећег кода, геттимеофдаи () функција се може користити, али у новом коду не би требало да се користи. цлоцк_геттиме () функција се може користити уместо геттимеофдаи () .