#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; }