Преобразовать время в форматированную строку
#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 системной библиотеки