#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()