Язык программирования Си

       

B. Функции даты и времени: <time.h>


Заголовочный файл <time.h> объявляет типы и функции, связанные с датой и временем. Некоторые функции имеют дело с местным временем, которое может отличаться от календарного, например в связи с зонированием времени. Типы clосk_t и time_t - арифметические типы для представления времени, a struct tm содержит компоненты календарного времени:

int tm_sec; - секунды от начала минуты (0,61); -- I.B.: все же наверно от 0 до 59 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; - дни с 1 января (0,365); int tm_isdst; - признак летнего времени.

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

clock_t clock(void)

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

time_t time(time_t *tp)

time возвращает текущее календарное время (т. е. время, прошедшее после определенной даты, - обычно после 0 ч 00 мин 00 с GMT 1-го января 1970 г. - примеч. ред.) или -1, если время не известно. Если tp не равно NULL, то возвращаемое значение записывается и в *tp.

double difftime(time_t time2, time_t time1)

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

time_t mktime(struct tm *tp)

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

Следующие четыре функции возвращают указатели на статические объекты, каждый из которых может быть изменен другими вызовами.

char *asctime(const struct tm *tp)

asctime переводит время в структуре *tp в строку вида

Sun Jan 3 15:14:13 1988\n\0




char *ctime(const time_t *tp)

ctime переводит календарное время в местное, что эквивалентно выполнению asctime(localtime(tp))

struct tm *gmtime(const time_t *tp)

gmtime переводит календарное время во Всемирное координированное время (Coordinated Universal Time - UTC). Выдаст NULL, если UTC не известно. Имя этой функции, gmtime, происходит от Greenwich Mean Time (среднее время по Гринвичскому меридиану).

struct tm *localtime(const time_t *tp)

localtime переводит календарное время *tp в местное.

size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp)

strftime форматирует информацию о дате и времени из *tp в строку s согласно формату fmt, который имеет много общих черт с форматом, задаваемым в функции printf. Обычные символы (включая и завершающий символ '\0') копируются в s. Каждая пара, состоящая из % и буквы, заменяется, как показано ниже, с использованием значений по форме, соответствующей местным традициям. В s размещается не более smax символов; strftime возвращает число символов без учета '\0' или нуль, если число сгенерированных символов больше smax.

%aсокращенное название дня недели
%Aполное название дня недели
%bсокращенное название месяца
%Bполное название месяца
%cместное представление даты и времени
%dдень месяца (01-31)
%Hчас (24-часовое время) (00-23)
%Iчас (12-часовое время) (01-12)
%jдень от начала года (001-366)
%mмесяц (01-12)
%Mминута (00-59)
%pместное представление AM или РМ (до или после полудня)
%Sсекунда (00-61)
%Uнеделя от начала года (считая, что воскресенье - 1-й день недели) (00-53)
%wдень недели (0-6, номер воскресенья - 0)
%Wнеделя от начала года (считая, что понедельник - 1-й день недели) (00-53)
%xместное представление даты
%Xместное представление времени
%yгод без указания века (00-99)
%Yгод с указанием века
%Zназвание временной зоны, если она есть
%%%

Содержание раздела