Время задается с помощью типа time_t
long integer (длинное целое), определенный вместе с функциями, предназначенными для обработки значений времени, в заголовочном файле time.h.Не думайте, что для хранения времени достаточно 32 битов. В системах UNIX и Linux, использующих 32-разрядный тип time_t
time_t, содержащий более 32 битов. Недавнее широкое внедрение 64-разрядных процессоров превращает это практически в неизбежность.#include
time_t time(time_t *tloc);
Вы можете найти низкоуровневое значение времени, вызвав функцию time
tloc, если он — непустой указатель.timeДалее для демонстрации функции time приведена простая программа envtime.c.
#include
#include
#include
#include
int main {
int i;
time_t the_time;
for (i = 1; i <= 10; i++) {
the_time = time((time_t *)0);
printf("The time is %ld\n", the_time);
sleep(2);
}
exit(0);
}
Когда вы запустите программу, она будет выводить низкоуровневое значение времени каждые 2 секунды в течение 20 секунд.
$ ./anytime
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
Использование времени и даты в виде количества секунд, прошедших с начала 1970 г., может быть полезно для измерения длительности чего-либо. Вы сможете сосчитать простую разность значений, полученных из двух вызовов функции time
time_t будет применяться для определения произвольных интервалов времени в секундах, поэтому была придумана функция difftime, которая вычисляет разность в секундах между двумя значениями типа time_t и возвращает ее как величину типа double:#include
double difftime(time_t time1, time_t time2);
Функция difftime
время1–время2time, — это количество секунд, которое может обрабатываться, но для максимальной переносимости следует применять функцию difftime.Для представления времени и даты в более осмысленном (с человеческой точки зрения) виде мы должны преобразовать значение времени в понятные время и дату. Для этого существуют стандартные функции.
Функция gmtime
#include
struct tm *gmtime(const time_t timeval)
В структуре tm
Элемент tm | Описание |
|---|---|
int tm_sec | Секунды, 0–61 |
int tm_min | Минуты, 0–59 |
int tm_hour | Часы, 0–23 |
int tm_mday | День в месяце, 1–31 |
int tm_mon | Месяц в году, 0–11 (January (январь) соответствует 0) |
int tm_year | Годы, начиная с 1900 г. |
int tm_wday | День недели, 0–6 (Sunday (воскресенье) соответствует 0) |
int tm_yday | День в году, 0–365 |
int tm_isdst | Действующее летнее время |
Диапазон элемента tm_sec