ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 13.12.2020
Просмотров: 4272
Скачиваний: 28
Глава 34. Работа с датами и временем <time.h>
391
Количество тактовых импульсов, сгенерированных процессором
в одну секунду, определяется макросом
CLOCKS_PER_SEC
.
В листинге 34.1 приведен пример использования функции
clock
.
Листинг 34.1. Пример использования функции
clock
#include <stdio.h>
#include <time.h>
int main()
{
int sec;
printf("Press any key to count seconds.\n");
getchar();
sec = clock() / CLOCKS_PER_SEC;
printf ("Number of seconds: %d\n", sec);
return 0;
}
34.4. Определение
текущего времени
Для определения текущего календарного времени в числовом
формате предназначена функция
time
, которая имеет следующий
прототип:
time_t time(time_t *tod);
В случае успешного завершения функция возвращает текущее
календарное время, а также записывает его по адресу, который
установлен в параметре
tod
. В противном случае функция воз-
вращает значение –1. Если в параметре
tod
установлено значение
NULL
, то функция
time
просто возвращает текущее календарное
время в числовом формате.
Пример использования функции
time
приведен в листинге 34.2.
Часть III. Стандартная библиотека языка программирования C
392
34.5. Нахождение разности времен
Для нахождения разности между двумя календарными датами,
представленными в числовом формате, предназначена функция
difftime
, которая имеет следующий прототип:
double difftime(time_t t1, time_t t0);
Функция возвращает разность между календарными датами
t1
и
t0
в секундах.
Пример использования функций
time
и
difftime
приведен в лис-
тинге 34.2.
Листинг 34.2. Пример использования функций
time
и
difftime
#include <stdio.h>
#include <time.h>
int main()
{
time_t t0, t1;
double d;
printf("Press any key to get the first time.\n");
getchar();
t0 = time(NULL);
printf("Press any key to get the second time.\n");
getchar();
t1 = time(NULL);
d = difftime(t1, t0);
printf("The difference between times: %Lg\n", d);
return 0;
}
Глава 34. Работа с датами и временем <time.h>
393
34.6. Преобразование представления
времени из числа в структуру
Для преобразования текущего календарного времени из числово-
го формата в формат структуры типа
tm
предназначены функции
gmtime
и
localtime
. Различие между этими функциями заключает-
ся в том, что функция
gmtime
устанавливает в структуру кален-
дарное время в
универсальных временных координатах
(UTC,
Universal Time Coordinated), которые раньше назывались "среднее
время по Гринвичу", а функция
localtime
устанавливает в струк-
туру локальное календарное время.
Функция
gmtime
имеет следующий прототип:
struct tm* gmtime(const time_t *tod);
Эта функция возвращает адрес статической структуры типа
tm
,
в которую она преобразует числовое представление календарного
времени, на которое указывает параметр
tod
. В структуре типа
tm
время задано в универсальных временных координатах.
В листинге 34.3 приведен пример использования функции
gmtime
.
Листинг 34.3. Пример использования функции
gmtime
#include <stdio.h>
#include <time.h>
int main ()
{
time_t t;
struct tm* p;
t = time(NULL);
p = gmtime(&t);
printf("Second: %d\n", p->tm_sec);
printf("Minute: %d\n", p->tm_min);
printf("Houre : %d\n", p->tm_hour);
printf("Day : %d\n", p->tm_mday);
Часть III. Стандартная библиотека языка программирования C
394
printf("Month : %d\n", p->tm_mon);
printf("Year : %d\n", p->tm_year);
return 0;
}
Функция
localtime
имеет следующий прототип:
struct tm* localtime(const time_t *tod);
Эта функция возвращает адрес статической структуры типа
tm
,
в которую она преобразует числовое представление календарного
времени, на которое указывает параметр
tod
. В структуре типа
tm
установлено локальное время.
В листинге 34.4 приведен пример использования функции
localtime
.
Листинг 34.4. Пример использования функции
localtime
#include <stdio.h>
#include <time.h>
int main ()
{
time_t t;
struct tm* p;
t = time(NULL);
p = localtime(&t);
printf("Second: %d\n", p->tm_sec);
printf("Minute: %d\n", p->tm_min);
printf("Houre : %d\n", p->tm_hour);
printf("Day : %d\n", p->tm_mday);
printf("Month : %d\n", p->tm_mon);
printf("Year : %d\n", p->tm_year);
return 0;
}
Глава 34. Работа с датами и временем <time.h>
395
34.7. Преобразование представления
времени из структуры в число
Для преобразования календарного времени, представленного
структурой типа
tm
в числовое представление, предназначена
функция
mktime
, которая имеет следующий прототип:
time_t mktime(struct tm *tptr);
Параметр
tptr
должен указывать на структуру типа
tm
, в которой
хранится календарное время. Это календарное время функция
преобразует в числовое представление, которое и возвращает.
В случае неудачного завершения функция возвращает значение
-1
. Функция завершается неудачей, если календарное время не
может быть представлено в числовом формате.
34.8. Преобразование представления
времени из числа в строку
Для преобразования числового представления времени в строку
с информацией о времени предназначена функция
ctime
, которая
имеет следующий прототип:
char *ctime(const time_t *tod);
где параметр
tod
должен указывать на календарное время, пред-
ставленное в числовом формате. Функция возвращает адрес стро-
ки с информацией о локальном календарном времени.
Листинг 34.5. Пример использования функции
ctime
#include <stdio.h>
#include <time.h>
int main ()
{
time_t t;
char* s;