time.h

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Стандартная библиотека
языка программирования С

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

Вступление[править | править вики-текст]

Некоторые функции могут работать с местным временем, которое может отличаться от календарного, например в связи с часовыми поясами. Определены арифметические типы 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)

Возвращает время, измеряемое процессором в тактах от начала выполнения программы, или −1, если оно не известно. Пересчет этого времени в секунды выполняется по формуле:
clock() / CLOCKS_PER_SEC

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(), в секунды. [источник не указан 26 дней]

CLK_PER_SEC

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

CLK_TCK

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

Типы данных[править | править вики-текст]

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

Ссылки[править | править вики-текст]