Include ctime c что это
Перейти к содержимому

Include ctime c что это

Время

Функций для работы со временем в языке C++ несколько. Рассмотрим некоторые из них.

Первая это функция clock(), которая подключается к проекту с помощью заголовочного файла <ctime>. Она позволяет вывести время работы программы к определенному моменту. С помощью этого можно вычислять, сколько времени затрачено на тот или иной участок кода. Рассмотрим пример.

Здесь вычисляется затраченное время путем сравнения значения clock() перед началом участка кода и после его конца. Так как clock() показывает время прошедшее с начала программы, остается только такой способ.

Если необходимо не внутреннее время программы, а календарное, то можно использовать функцию time(). Она возвращает текущую дату и время, но делает это в секундах, а если точнее, то выводит количество секунд, прошедшее с 00:00 1 января 1970 года.

Include ctime c что это

Функции asctime() и mktime() используют в качестве аргумента локальное время в календарном представлении, то есть разделеное на год, месяц, день и т.д. Время в календарном представлении хранится в структуре tm , которая определена в файле <time.h> следующим образом:

Члены структуры tm : tm_sec Число секунд, прошедших после минуты, обычно в диапазоне от 0 до 59; но для того, чтобы установить високосную секунду, используются числа до 61. tm_min Число минут, прошедших после часа, от 0 до 59. tm_hour Количество прошедших часов после полуночи, от 0 до 23. tm_mday День месяца, от 1 до 31. tm_mon Число месяцев, прошедших с января, от 0 до 11. tm_year Число лет, прошедших с 1900. tm_wday Число дней, прошедших с воскресенья, от 0 до 6. tm_yday Количество дней, прошедших с 1 января, от 0 до 365. tm_isdst Этот флаг показывает, в действительности ли "летнее" время учтено в этой структуре. Значение флага положительно, если "летнее" время учитывается, 0, если нет, и отрицательно, если информация недоступна.

Функция ctime( t ) является эквивалентом asctime(localtime( t )) . Она преобразует календарное время t в строку формата

"Wed Jun 30 21:49:08 1993\n"

Аббревиатуры дней недели: `Sun’, `Mon’, `Tue’, `Wed’, `Thu’, `Fri’ и `Sat’. Аббревиатуры месяцев: `Jan’, `Feb’, `Mar’, `Apr’, `May’, `Jun’, `Jul’, `Aug’, `Sep’, `Oct’, `Nov’ и `Dec’. Возвращаемое значение указывает на статически размещенную строку, которая может быть заново записана с помощью последовательности вызовов любых функций даты и времени. Функция также устанавливает значение внешней переменной tzname (см. tzset (3)) равным значению текущей временной зоны. Реентрантная версия ctime_r() делает то же самое, но заносит строку в буфер, предоставляемый пользователем. Длина буфера должна быть не менее 26 байт. Устанавливать tzname необязательно.

Функция gmtime() преобразует календарное время timep в локальное представление времени, определенное во всеобщем скоординированном времени (UTC). Но она может вернуть значение NULL, если год не может быть описан типом integer. Возвращаемое значение указывает на статически выделенную структуру, содержимое которой может быть перезаписано последующими вызовами любых функций, работающих с датой и временем. Функция gmtime_r() делает то же самое, но помещает данные в структуру, предоставленную пользователем.

Функция localtime() преобразует календарное время timep в локальное, определенное в соответствии с заданной пользователем временной зоной. Функция работает так, как будто она вызывает tzset (3), и устанавливает внешние переменные: tzname в значение текущей временной зоны, timezone в значение разницы в секундах между всеобщим скоординированным временем (UTC) и локальным стандартом времени и daylight в ненулевое значение, если используются стандартные правила "летнего" времени. Возвращаемое значение указывает на статически выделенную структуру, содержимое которой может быть перезаписано последующими вызовами любых функций, работающих с датой и временем. Функция localtime_r() делает то же самое, но помещает данные в структуру, предоставленную пользователем. Она не нуждается в установке tzname .

Функция asctime() преобразует значение локального времени tm в строку того же формата, что и функция ctime() . Возвращаемое значение указывает на статическую строку, которая может быть перезаписана последовательностью вызовов любых функций даты и времени. Функция asctime_r() делает то же самое, но заносит строку в буфер, предоставленный пользователем. Длина буфера должна быть не менее 26 байт.

Функция mktime() преобразует время в календарном представлении в абсолютное время. Функция игнорирует содержимое полей структуры tm_wday и tm_yday и пересчитывает их значения в соответствии с другими элементами структуры. Если значения элементов структуры выходят за пределы допустимых значений, то они "нормализуются" (так, например, 40 октября превращается в 9 ноября). Вызов mktime() также присваивает внешней переменной tzname значение текущей временной зоны. Если локальное время не может быть представлено как календарное (число секунд с начала века), то mktime() возвращает значение (time_t)(-1) и не изменяет значения членов структуры локального времени tm_wday и tm_yday .

C ++ — Дата и время

Стандартная библиотека C ++ не предоставляет правильный тип даты. C ++ наследует структуры и функции для обработки дат и времени из C. Чтобы получить доступ к функциям и структурам, связанным с датой и временем, вам нужно будет включить заголовочный файл <ctime> в вашей программе на C ++.

Существует четыре типа времени: clock_t, time_t, size_t и tm . Типы — clock_t, size_t и time_t могут представлять системное время и дату как некоторое целое число.

Тип структуры tm содержит дату и время в виде структуры C, имеющей следующие элементы:

Ниже приведены важные функции, которые мы используем при работе с датой и временем на C или C ++. Все эти функции являются частью стандартной библиотеки C и C ++, и вы можете проверить их детали, используя ссылку на стандартную библиотеку C ++, приведенную ниже.

time_t time (time_t * time); Это возвращает текущее время календаря системы в количестве секунд, прошедших с 1 января 1970 года. Если система не имеет времени, возвращается .1.
char * ctime (const time_t * time); Это возвращает указатель на строку формы день месяц год: минуты: секунды год \ n \ 0 .
struct tm * localtime (const time_t * time); Это возвращает указатель на структуру tm, представляющую локальное время.
clock_t clock (void); Это возвращает значение, которое приблизительно соответствует времени, в течение которого вызываемая программа была запущена. Значение, равное .1, возвращается, если время недоступно.
char * asctime (const struct tm * time); Это возвращает указатель на строку, содержащую информацию, хранящуюся в структуре, на которую указывает время, преобразованное в форму: day month date hours: minutes: seconds year \ n \ 0
struct tm * gmtime (const time_t * time); Это возвращает указатель на время в виде структуры tm. Время представлено в скоординированном универсальном времени (UTC), которое по сути является средним временем по Гринвичу (GMT).
time_t mktime (struct tm * time); Это возвращает эквивалент календарного времени времени, найденного в структуре, на которую указывает время.
double difftime (time_t time2, time_t time1); Эта функция вычисляет разницу в секундах между временем 1 и временем 2.
size_t strftime (); Эта функция может использоваться для форматирования даты и времени в определенном формате.

Текущая дата и время

Предположим, вы хотите получить текущую системную дату и время, либо в качестве локального времени, либо в качестве скоординированного универсального времени (UTC). Ниже приведен пример для достижения того же:

Когда приведенный выше код компилируется и выполняется, он производит следующий результат:

Формат времени с использованием struct tm

Структура tm очень важна при работе с датой и временем на C или C ++. Эта структура содержит дату и время в виде структуры C, как указано выше. Большинство функций, связанных со временем, используют структуру tm. Ниже приведен пример, который использует различные функции, связанные с датой и временем, и структуру tm —

При использовании структуры в этой главе я исхожу из предположения, что у вас есть базовое понимание структуры C и как получить доступ к членам структуры с помощью оператора arrow -> .

Когда приведенный выше код компилируется и выполняется, он производит следующий результат:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *