Файл: Pobegaylo_A._C_Cplus_dlya_studenta.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 13.12.2020

Просмотров: 4127

Скачиваний: 28

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Глава 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. 


background image

Часть 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; 


background image

Глава 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); 


background image

Часть 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; 


background image

Глава 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; 


Смотрите также файлы