Преобразовать время в форматированную строку
#include <time.h>size_t strftime( char *s,size_t maxsize,const char *format,const struct tm *timeptr );
libc
Функция strftime() преобразует время, указанное в параметре timeptr, в массив (строку) s в соответствии с форматом format.
Форматы
Строка format состоит из нуля или более директив и обычных символов. Директива состоит из символа a %, за которым следует символ, определяющий производимую подстановку. Все обычные символы копируются в массив без изменений. В массив помещается не более чем maxsize символов.
Информация о местном часовом поясе используется так же как при вызове tzset().
%a %A %b %B %c %d 01-31). %D %e 1-31); перед однозначными числами ставится пробел. %F %g 00-99). %G 1998). %h %H 00-23). %I 01-12). %j 001-366).. %m 01-12). %M 00-59). %n %p %r 01-12) с использованием обозначения AM / PM в формате HH:ММ:SS (AM|PM). %R %H: %M. %S 00-59). %t %T %u 1-7), где понедельник это 1. %U 00-52), где воскресенье - первый день недели. %V 01-53), где понедельник - первый день недели. Неделя, включающая 1 января, относится к новому году, если в новом году прошло четыре или более дней недели, иначе это последняя неделя предыдущего года. %w 0-6), где 0 - воскресенье. %W 00-52), где понедельник - первый день недели. %x %X %y 00-99). %Y 00-99). %z %Z %% Некоторые из приведенных выше спецификаторов преобразования могут быть изменены с помощью префикса E или O. Если для регионального стандарта не существует альтернативных форматов, они ведут себя так, как если бы были вызваны неизмененные спецификаторы преобразования::
%Ec %EC %Ex %EX %Ey %EC только для представления альтернативного года %EY %Od %Oe %OH %OI %Om %OM %OS %Ou 1). %OU %U). %OV %V). %Ow 0). %OW %Oy %C с использованием альтернативных цифровых символов. Количество символов, помещенных в массив, не включая завершающий нулевой символ, или 0. Если количество символов превышает число maxsize, то содержимое строки не определено.
Если возникает ошибка функция записывает ее код в errno.
#include <stdio.h>#include <stdlib.h>#include <time.h>int main( void ){time_t time_of_day;char buffer[ 80 ];time_of_day = time( NULL );strftime( buffer, 80, "Today is %A %B %d, %Y",localtime( &time_of_day ) );printf( "%s\n", buffer );return (EXIT_SUCCESS);}
Код генерирует следующий вывод:
$ ./a.out Today is Thursday February 25, 1999
ANSI, POSIX 1003.1
asctime(), asctime_r(), ctime(), ctime_r(), sprintf(), struct tm, tzset(), wcsftime()
Предыдущий раздел: Описание API системной библиотеки