#include <time.h>
size_t strftime(char *str, size_t maxsize, const char *fmt,
const struct tm *time);
Функция strftime() помещает информацию о времени и дате (вместе с другой информацией) в строку, адресуемую параметром str, в соответствии с командами форматирования, которые содержатся в адресуемой параметром fmt строке. Эта функция использует разделенное на компоненты время, на которое указывает указатель time. В строку str будет помещено не более maxsize символов.
В версии С99 к параметрам str, fmt и time применен квалификатор restrict.
Работа функции strftime() напоминает работу функции sprintf() в том, что она распознает набор команд форматирования, которые начинаются со знака процента (%), и помещает отформатированный результат в строку. Команды форматирования используются для задания точного способа представления различных данных времени и даты в параметре str. Любые другие символы, содержащиеся в строке форматирования, помещаются в строку str без изменений. Время и дата отображаются по местному времени. Команды форматирования перечислены в следующей таблице. Обратите внимание на то, что во многих командах прописные и строчные буквы имеют различную интерпретацию.
Функция strftime() возвращает количество символов, помещенных в строку, адресуемую параметром str, или нуль при возникновении ошибки.
| Код | Замещается |
|---|---|
| %a | Сокращенное название дня недели |
| %A | Полное название дня недели |
| %b | Сокращенное название месяца |
| %B | Полное название месяца |
| %c | Стандартная строка даты и времени |
| %C | Две последние цифры года |
| %d | День месяца в виде десятичного числа (1-31) |
| %D | Дата в виде месяц/день/год (добавлено в версии С99) |
| %e | День месяца в виде десятичного числа (1-31) в двух-символьном поле (добавлено в С99) |
| %F | Дата в виде «год-месяц-день» (добавлено в С99) |
| %g | Последние две цифры года с использованием понедельного года (добавлено в С99) |
| %G | Год с использованием понедельного года (добавлено в С99) |
| %h | Сокращенное название месяца (добавлено в С99) |
| %Н | Час (0-23) |
| %j | Час (1-12) |
| %j | День года в виде десятичного числа (1-366) |
| %m | Месяц в виде десятичного числа (1-12) |
| %M | Минуты в виде десятичного числа (0-59) |
| %n | Разделитель строк (добавлено в С99) |
| %p | Местный эквивалент AM (до полудня) или РМ (после полудня) |
| %r | 12-часовое время (добавлено в С99) |
| %R | Время в виде чч:мм (добавлено в С99) |
| %S | Секунды в виде десятичного числа (0-60) |
| %T | Горизонтальная табуляция (добавлено в С99) |
| %T | Время в виде чч:мм:сс (добавлено в С99) |
| %u | День недели; понедельник — первый день недели (0-6) (добавлено в С99) |
| %U | Неделя года; воскресенье — первый день недели (0-53) |
| %V | Неделя года с использованием понедельного года (добавлено в С99) |
| %w | День недели в виде десятичного числа (0-6, воскресенье — 0-й день) |
| %W | Неделя года; понедельник — первый день недели (0-53) |
| %x | Стандартная строка даты |
| %X | Стандартная строка времени |
| %y | Год в виде десятичного числа без столетия (0-99) |
| %Y | Год в вуде десятичного числа, включающего столетие |
| %z | Сдвиг относительно координированного всемирного (UTC) времени (добавлено в С99) |
| %Z | Название часового пояса |
| %% | Знак процента |
Версия С99 позволяет использовать в функции strftime() определенные команды форматирования с модификаторами Е и O. Модификатор Е может модифицировать такие команды, как с, C, х, X, у, Y, d, e и H. Модификатор O может модифицировать команды: I, m, M, S, u, U, V, w, W и y. Использование этих модификаторов приводит к альтернативному представлению отображаемого времени и/или даты. За подробностями обращайтесь к документации, поставляемой вместе с используемым вами компилятором.
Понедельный год используется командами форматирования %g, %G и %V. При таком представлении первым днем недели является понедельник, а первая неделя года должна включать день с датой «4 января».
Пример
Предположим, что ltime указывает на структуру, которая содержит 10:00:00 AM. Следующая программа печатает: «Сейчас 10 AM.»:
#include <time.h>
#include <stdio.h>
int main(void)
{
struct tm *ptr;
time_t lt;
char str[80];
lt = time(NULL);
ptr = localtime(<);
strftime(str, 100, "Сейчас %H %p.", ptr);
printf(str);
return 0;
}
Зависимые функции
time() localtime() gmtime()










