time.h
time.h — заголовочный файл стандартной библиотеки языка программирования C, содержащий типы и функции для работы с датой и временем.
Вступление
[править | править код]Некоторые функции могут работать с местным временем, которое может отличаться от календарного, например в связи с часовыми поясами. Определены арифметические типы clock_t
и time_t
для представления времени, а структура struct tm
содержит компоненты календарного времени.
Имя | Описание |
---|---|
int tm_sec;
|
Секунды от начала минуты - [0,60][1] |
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
, которая задаёт количество единиц значения времени в одной секунде.[2] Начало отсчёта времени, возвращаемого функциейclock()
, не обязательно должно совпадать с началом выполнения программы, а промежутки времени, измеренные при помощи данной функции, могут не соответствовать аналогичным промежуткам календарного времени, в зависимости от ресурсов, выделяемых программе операционной системой.[3]
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()
, в секунды. [источник не указан 3701 день]
CLK_PER_SEC
- Альтернативное имя константы
CLOCKS_PER_SEC
, используемое в некоторых библиотеках.
CLK_TCK
- Вышедший из употребления макрос для константы
CLOCKS_PER_SEC
. [источник не указан 3701 день]
Типы данных
[править | править код]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;
}
Примечания
[править | править код]- ↑ Интервал допускает наличие секунды координации. http://en.cppreference.com/w/cpp/chrono/c/tm Архивная копия от 13 января 2012 на Wayback Machine
- ↑ Русские man: Библиотечные вызовы: clock . Дата обращения: 24 января 2019. Архивировано 25 января 2019 года.
- ↑ cppreference.com: clock . Дата обращения: 24 января 2019. Архивировано 25 января 2019 года.
Ссылки
[править | править код]time.h
— основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)