time.h — заголовочный файл стандартной библиотеки языка программирования C, содержащий типы и функции для работы с датой и временем.

Вступление

Некоторые функции могут работать с местным временем, которое может отличаться от календарного, например в связи с часовыми поясами. Определены арифметические типы clock_t и time_t для представления времени, а структура struct tm содержит компоненты календарного времени.

Имя Описание int tm_sec; Секунды от начала минуты - [0,60]Интервал допускает наличие секунды координации. http://en.cppreference.com/w/cpp/chrono/c/tm int tm_min; Минуты от начала часа - [0,59] int tm_hour; Часы от полуночи - [0,23] int tm_mday; День месяца - [1,31] int tm_mon; Месяцы после января - [0,11] int tm_year; Года с 1900 int tm_wday; Дни с воскресенья - [0,6] int tm_yday; Дни с первого января - [0,365] int tm_isdst; Признак летнего времени

Поле tm_isdst имеет положительное значение, если активен режим летнего времени, нуль в противном случае и отрицательное значение, если информация о сезоне времени недоступна/неизвестна.

Основные функции

clock_t clock(void) Возвращает время, затраченное процессором на выполнение программы, представленное типом clock_t, или -1, если оно неизвестно. Размерность возвращаемого значения определяется при помощи константы CLOCKS_PER_SEC, которая задаёт количество единиц значения времени в одной секунде. Начало отсчёта времени, возвращаемого функцией clock(), не обязательно должно совпадать с началом выполнения программы, а промежутки времени, измеренные при помощи данной функции, могут не соответствовать аналогичным промежуткам календарного времени, в зависимости от ресурсов, выделяемых программе операционной системой.

time_t time(time_t *tp) Возвращает текущее календарное время или −1, если это время не известно. Если указатель tp не равен NULL, то возвращаемое значение записывается также и в *tp

double difftime(time_t time2,time_t time1) Возвращает разность time2-time1, выраженную в секундах.

time_t mktime(struct tm *tp) Преобразует местное время, заданное структурой *tp, в календарное и возвращает его в том же виде, что и функция time(). Компоненты структуры будут иметь значения в указанных выше диапазонах. Функция возвращает календарное время или −1, если оно не представимо.

char *asctime(const struct tm *tp) Преобразует время из структуры *tp в строку вида "Sun Jan 3 15:14:13 1988\n\0"

Константы

CLOCKS_PER_SEC Определяет количество тактов системных часов в секунду. Используется для пересчета величины, возвращаемой функцией clock(), в секунды.

CLK_PER_SEC Альтернативное имя константы CLOCKS_PER_SEC, используемое в некоторых библиотеках.

CLK_TCK Вышедший из употребления макрос для константы CLOCKS_PER_SEC.

Типы данных

clock_t Возвращается функцией clock(). Обычно определён как int или long int. time_t Возвращается функцией time(). Обычно определён как int или long int. struct tm Нелинейное, дискретное календарное представление времени.

Пример использования Вывод на экран текущего времени.

#include <stdio.h> #include <time.h>

int main(void) { const time_t timer = time(NULL); printf("%s\n", ctime(&timer)); return 0; }

Visual Studio 2010 #include <stdio.h> #include <time.h>

int main(int argc, char** argv[]) { time_t t = time(NULL); struct tm* aTm = localtime(&t); printf("%04d/%02d/%02d %02d:%02d:%02d \n",aTm->tm_year+1900, aTm->tm_mon+1, aTm->tm_mday, aTm->tm_hour, aTm->tm_min, aTm->tm_sec); getchar(); return 0; }

Запись в файл #include <stdio.h> #include <time.h>

int main(int argc, char** argv[]) { time_t t = time(NULL); struct tm* aTm = localtime(&t);

FILE* hFILE = fopen("test", "w"); fprintf(hFILE,"%04d/%02d/%02d %02d:%02d:%02d",aTm->tm_year+1900, aTm->tm_mon+1, aTm->tm_mday, aTm->tm_hour, aTm->tm_min, aTm->tm_sec); return 0; }

Примечания

Ссылки

Категория:Статьи с примерами кода Си