Страница 69 из 324
$ <b>./anytime</b>
The time is 1179643852
The time is 1179643854
The time is 1179643856
The time is 1179643858
The time is 1179643860
The time is 1179643862
The time is 1179643864
The time is 1179643866
The time is 1179643868
The time is 1179643870
Как это работает
Программа вызывает функцию time с пустым указателем в качестве аргумента, которая возвращает время и дату как количество секунд. Программа засыпает на две секунды и повторяет вызов time в целом 10 раз.
Использование времени и даты в виде количества секунд, прошедших с начала 1970 г., может быть полезно для измерения длительности чего-либо. Вы сможете сосчитать простую разность значений, полученных из двух вызовов функции time. Однако комитет, разрабатывавший стандарт языка ISO/ANSI С, в своих решениях не указал, что тип time_t будет применяться для определения произвольных интервалов времени в секундах, поэтому была придумана функция difftime, которая вычисляет разность в секундах между двумя значениями типа time_t и возвращает ее как величину типа double:
<b>#include <time.h></b>
<b>double difftime(time_t time1, time_t time2);</b>
Функция difftime вычисляет разницу между двумя временными значениями и возвращает величину, эквивалентную выражению время1–время2, как число с плавающей точкой. В ОС Linux значение, возвращаемое функцией time, — это количество секунд, которое может обрабатываться, но для максимальной переносимости следует применять функцию difftime.
Для представления времени и даты в более осмысленном (с человеческой точки зрения) виде мы должны преобразовать значение времени в понятные время и дату. Для этого существуют стандартные функции.
Функция gmtime подразделяет низкоуровневое значение времени на структуру, содержащую более привычные поля:
<b>#include <time.h></b>
<b>struct tm *gmtime(const time_t timeval)</b>
В структуре tm, как минимум, определены элементы, перечисленные в табл. 4.2.
Таблица 4.2