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;
}

Примечания

[править | править код]
  1. Интервал допускает наличие секунды координации. http://en.cppreference.com/w/cpp/chrono/c/tm Архивная копия от 13 января 2012 на Wayback Machine
  2. Русские man: Библиотечные вызовы: clock. Дата обращения: 24 января 2019. Архивировано 25 января 2019 года.
  3. cppreference.com: clock. Дата обращения: 24 января 2019. Архивировано 25 января 2019 года.