Файл: Pobegaylo_A._C_Cplus_dlya_studenta.pdf

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

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

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

Добавлен: 13.12.2020

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

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

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

Часть III. Стандартная библиотека языка программирования C 

396 

  t = time(NULL); 
  s = ctime(&t); 
  printf("Time: %s\n", s); 
 
  return 0; 

34.9. Преобразование представления 

времени из структуры в строку 

Для  преобразования  времени,  представленного  структурой,  в 
строку  с  информацией  о  времени,  предназначена  функция 

asctime

, которая имеет следующий прототип: 

  char *asctime(const struct tm *tptr); 

где параметр 

tptr

 должен указывать на календарное время, пред-

ставленное структурой типа 

tm

. Функция возвращает адрес стро-

ки, содержащей информацию о календарном времени. 
В  листинге  34.6  приведен  пример  использования  функции 

asctime

Листинг 34.6. Пример использования функции 

asctime

 

#include <stdio.h> 
#include <time.h> 
 
int main () 

  time_t t; 
  struct tm *p; 
  char* s; 
 
  t = time(NULL); 
  p = gmtime(&t); 
  s = asctime(p); 
  printf("Time: %s\n", s); 
 
  return 0; 


background image

Глава 34. Работа с датами и временем <time.h> 

397 

34.10. Форматирование представления 
времени в строке 

Для преобразования времени, представленного структурой, в от-
форматированную  строку  с  информацией  о  времени  предназна-
чена функция 

strftime

, которая имеет следующий прототип: 

  size_t strftime(char *s, size_t n, const char *format, 
                                     const struct tm *tptr); 

Опишем назначение параметров этой функции. 

Параметр 

s

  должен  указывать  на  массив  символов,  в  который 

функция  запишет  отформатированную  информацию  о  календар-
ном времени. 

Параметр 

n

 должен содержать длину массива, на который указы-

вает параметр 

s

Параметр 

format

  должен  указывать  на  строку,  в  которой  содер-

жатся спецификаторы  преобразования для  представления  време-
ни в массиве, на который указывает параметр 

s

. Каждый специ-

фикатор преобразования начинается с символа 

%

, за которым сле-

дует символ, указывающий формат преставления времени и даты. 
Спецификаторы преобразования приведены в табл. 34.1. Функция 

strftime

  сканирует  строку 

format

  и  для  каждого  спецификатора 

преобразования  записывает  в  строку 

s

  соответствующую  после-

довательность символов. После завершения преобразования фор-
матов функция записывает в массив 

s

 пустой символ. 

Если при сканировании строки 

format

 функция встретит длинный 

(multibyte)  символ,  отличный  от  символа 

%

,  то  функция  перепи-

сывает его в массив 

s

Параметр 

tptr

  должен  указывать  на  календарное  время,  пред-

ставленное  структурой  типа 

tm

.  Это  календарное  время  будет 

преобразовано  в  строку  в  соответствии  с  форматом,  заданным 
параметром 

format

,  и  записано  в  массив,  на  который  указывает 

параметр 

s


background image

Часть III. Стандартная библиотека языка программирования C 

398 

Таблица 34.1.

 Спецификаторы преобразования  

календарного времени 

Спецификатор  Назначение спецификатора 

Пример 

%a 

Сокращенное название дня 
недели 

Sun 

%A 

Полное название дня недели 

Sunday 

%b 

Сокращенное название месяца 

Dec 

%B 

Полное название месяца 

December 

%c 

Дата и время 

Dec  2 06:55:15 
1979 

%d 

День недели 

02 

%H 

Час суток (длина суток – 24 часа) 

16 

%I 

Час дня (длина дня – 12 часов) 

06 

%j 

День года, начиная с 001 

335 

%m 

Месяц года, начиная с 001 

12 

%M 

Минуты часа 

55 

%p 

AM/PM индикатор 

AM 

%S 

Секунды минуты 

15 

%U 

Неделя года, начиная с 00. 
Неделя начинается в воскресенье 

48 

%w 

День недели, начиная с 0 

%W 

Неделя года, начиная с 00 Неделя 
начинается с понедельника 

47 

%x 

Дата 

Dec  2 1979 

%X 

Время 

06:55:15 

%y 

Год века, начиная с 00 

79 

%Y 

Год 

1979 

%Z 

Название временной зоны, если 
оно есть 

EST 

%% 

Знак процента 


background image

Глава 34. Работа с датами и временем <time.h> 

399 

При успешном завершении функция возвращает количество сим-
волов,  записанных  в  массив 

s

.  Функция  завершается  успешно, 

если значение параметра 

n

 больше чем количество символов, за-

писанных в массив 

s

. В противном случае функция возвращает 

0

На  форматирование  времени  влияет  значение  локальной  катего-
рии 

LC_TIME

.  Локальные  категории  и  работа  с  ними  описаны 

в 

гл. 33

В  листинге  34.7  приведен  пример  использования  функции 

strftime

Листинг 34.7. Пример использования функции 

strftime

 

#include <stdio.h> 
#include <time.h> 
int main () 

  time_t t; 
  struct tm *p; 
  char s[80]; 
  char* format = "%A %B %Y"; 
 
  t = time(NULL); 
  p = gmtime(&t); 
  if (strftime(s, 80, format, p)) 
    printf("Time: %s\n", s); 
  else 
    printf("strftime failed.\n"); 
 
  return 0; 

 

 

 

 

 

 


background image

Часть III. Стандартная библиотека языка программирования C 

400 

 

 

 

 

 

 

 

 

 

 

 

 

 


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