Документация по LinuxLinuxDoc.Ru 🔍

strftime - форматирование даты и времени

НАЗВАНИЕ
strftime - форматирование даты и времени

СИНТАКСИС
#include

size_t strftime(char *s, size_t max, const char *format,
const struct tm *tm);

ОПИСАНИЕ
Функция strftime() форматирует время tm в соответствии с
указанным форматом format и помещает результат в
символьный массив s размером max.

Обычно символы в строке форматирования копируются в s без
преобразований. Символы, определяющие преобразования,
предваряются символом `%', и в s их заменяют следующие
символы:

%a (аббревиатура названия дня недели в зависимости от
текущей локали);

%A (полное название дня недели в зависимости от
текущей локали);

%b (аббревиатура названия месяца в зависимости от
текущей локали);

%B (полное название месяца в зависимости от текущей
локали);

%c (предпочтительный формат даты и времени для текущей
локали);

%C (век (год/100) как целое двухразрядное число (SU));

%d (день месяца в десятичной форме (от 01 до 31));

%D (формат даты в %м/%д/%г (только для американцев, в
других странах обычная форма - %д/%м/%г (SU).);

%e (то же, что и %d: десятичное число, обозначающее
номер дня месяца, но вместо начального нуля
ставится пробел (SU));

%E (модификатор: использовать другой формат, см. далее
(SU));

%F (эквивалент %Y-%m-%d (формат даты ISO 8601). (C99))

%G (указывает год как четырехзначное число (по
стандарту ISO 8601). Имеет тот же формат и
значение, что и %y, но если неделя входит также в
прошедший (или последующий) год (в соответствии со
стандартом ISO о номерах недель), то в этом случае
отображается прошедший год (TZ).);

%g (то же, что и %G, но без первых двух чисел, то есть
двухразрядное число, 00-99 (TZ));

%h (аналогично %b(SU));

%H (показывает час как десятичное число от 00 до 23);

%I (показывает час как десятичное число от 01 до 12);

%j (показывает день года как десятичное число от 001
до 366);

%k (показывает час как десятичное число от 0 до 23;
начальные нули заменяются пробелами (см. также
%H,(TZ));

%l (показывает час, как десятичное число (от 1 до 12);
начальные нули заменяются пробелами (см. также %I
(TZ));

%m (показывает месяц как десятичное число от 01 до
12);

%M (показывает минуты как десятичное число от 00 до
59);

%n (символ новой строки (SU));

%O (модификатор: использовать другой формат, см. далее
(SU));

%p (показывает `AM' или `PM', в зависимости от времени
суток или от соответствующей локали. Полдень
обозначен как `pm', а полночь - как 'am'.);

%P (то же, что и %p, но в нижнем регистре (например,
`pm') (GNU));

%r (сообщает о времени с указанием a.m. или p.m. В
локали POSIX это соответствует `%I:%M:%S %p'
(SU).);

%R (показывает время в формате 24-х часов (%H:%M). В
варианте %T, описанном ниже, указаны еще и секунды
(SU).);

%s (показывает количество секунд с начала 1970-01-01
00:00:00 UTC (TZ));

%S (отображает секунды в десятичной форме от 00 до
61);

%t (символ табуляции (SU));

%T (показывает время в 24-часовом формате %H:%M:%S
(SU));

%u (показывает день недели как десятичное число от 1
до 7. Понедельник считается равным 1. См. также %w
(SU).);

%U (показывает номер недели текущего года в виде
десятичного числа от 00 до 53, начиная с первого
воскресенья как первого дня первой недели. См.
также %V и %W.);

%V (по стандарту ISO 8601:1988 номер недели в году
отображается в виде десятичного числа (от 01 до
53), где первая неделя - это неделя, минимум 4 дня
которой находятся в текущем году. Первым днем
недели считается понедельник. См. также %U и %W.);

%w (показывает день недели как десятичное число от 0
до 6, и воскресенье считается равным нулю. См.
также %u.);

%W (показывает номер недели в году как десятичное
число от 00 до 53, первый понедельник считается
первым днем недели номер 01);

%x (показывает дату в формате, указанном в текущей
локали, без времени);

%X (показывает время в формате, указанном в текущей
локали, без даты);

%y (показывает год как двухразрядное число от 00 до
99, без указания века);

%Y (показывает год как четырехразрядное десятичное
число (с указанием века));

%z (показывает часовой пояс как смещение от GMT
(Гринвича). Требует совместимости с RFC822
(форматы: "%a, %d %b %Y %H:%M:%S %z" (GNU));

%Z (показывает часовой пояс, или его название, или
аббревиатуру);

%+ (показывает дату и время в формате date(1)(TZ));

%% (символ `%');

(некоторые настройки могут иметь модификаторы, которые
обозначаются буквами E или O. Если текущая локаль не
поддерживает такие модификаторы или если они для нее не
существуют, то данные будут представлены в виде, который
соответствует указанному формату без модификатора (SU).
Единая спецификация Unix имеет такие модификаторы: %Ec,
%EC, %Ex, %EX, %Ry, %EY, %Od, %Oe, %OH, %OI, %Om, %OM,
%OS, %Ou, %OU, %OV, %Ow, %OW, %Oy, где модификатор O
означает использование альтернативных численных символов
(например, римские цифры), а модификатор E отражает
альтернативное представление, зависящее от текущей локали.

Отформатированный вывод структуры времени tm описан в
. Смотрите также ctime(3)).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Функция strftime() возвращает количество символов в
массиве s, не считая завершающие символы NULL. Иначе
возвращается 0, а содержимое массива будет неопределенным
(версии libc, изданные ранее 4.4.4 (например, libc
4.4.1), возвратят значение max, если массив слишком мал).

Заметьте, что возвращаемое значение 0 не всегда означает
ошибку, например, во многих локалях %p представляет собой
"пустую" строку.

ОКРУЖЕНИЕ
Используются переменные окружения TZ и LC_TIME.

СООТВЕТСТВИЕ СТАНДАРТАМ
ANSI C, SVID 3, ISO 9899. Большинство таких настроек
поддерживаются ANSI C (не помечены), единой спецификацией
Unix (Single Unix Specification (помечена как SU)),
пакетом, разграничивающим часовые пояса (Olson's timezone
package (помечены как TZ), glibc (помечена как GNU), кроме
%+, которые не поддерживаются glibc2. С другой стороны,
glibc2 имеет несколько других расширений и дополнительных
настроек. POSIX.1 ссылается только на ANSI C; POSIX.2
описывает на примере date(1) несколько расширений, которые
можно применить и к strftime. Формат %F включен в C99 и
POSIX 1003.1-2001.
Читать новости Linux в Telegram
Linux - strftime - форматирование даты и времени
Мы в соцсетях ✉