Linux программирование в примерах
Форматирующая строка содержит символы букв, смешанные о описателями преобразования, указывающими, что должно быть помещено в строку, такими, как полное имя дня недели, час в соответствии с 24-часовым или 12-часовым циклом, наличие указателей am или p.m [64], и т.д. (Вскоре будут приведены примеры.)
Если всю строку можно отформатировать с использованием не более
символов, возвращаемое значение представляет собой число символов, помещенных вmax, не включая завершающий нулевой байт. В противном случае, возвращаемое значение ноль. В последнем случае содержаниеs«неопределенно». Следующий простой пример дает представление об использованииs:strftime()#include <stdio.h>#include <time.h>int main(void) {char buf[100];time_t now;struct tm *curtime;time(&now);curtime = localtime(&now);(void)strftime(buf, sizeof buf,"It is now %A, %B %d, %Y, %I:%M %p", curtime);printf("%s\n", buf);exit(0);}После запуска эта программа выводит что-то типа:
It is now Thursday, May 22, 2003, 04:15 PMВ табл. 6.2 предоставлен полный список описателей преобразования, их возможные альтернативные представления и их значения. Вдобавок стандарт C99 добавил к списку дополнительные описатели; новые для C99 описатели помечены символом √.
Таблица 6.2. Описатели преобразования формата
strftime()
Описатель C99 Значение %aЛокальное сокращенное название дня недели. %AЛокальное полное название дня недели. %bЛокальное сокращенное название месяца. %BЛокальное полное название месяца. %c, %EcЛокальное «подходящее» представление даты и времени %C, %EC√ Век (00–99) %d, %OdДень месяца (01–31) %D√ То же, что %m/%d/%y%e, %Oe√ День месяца. Одна цифра дополняется пробелом (1–31). %F√ То же, что и (формат даты ISO 8601)%Y-%m-%d%g√ Две последние цифры, основанной на неделе года (00–99). %G√ Основанный на неделе год ISO 8601 %h√ То же, что и %b%H, %OHЧас в 24-часовом цикле (00–23) %I, %OIЧас в 12-часовом цикле (01–12) %jДень года (001–366) %m, %OmМесяц в виде числа (01–12). %M, %OMМинута в виде числа (00–59) %n√ Символ конца строки (' ')\n%pЛокальное обозначение a.m./p.m. %r√ Локальное время в 12-часовом цикле %R√ Тоже, что и %H:%M%S, %OSСекунда в виде числа (00–60) %t√ Символ табуляции (' ')\t%T√ То же, что и (формат ISO 8601).%H:%M:%S%u, %Ou√ Число дня недели ISO 8601, понедельник = 1 (1–7). %U, %OUНомер недели, первое воскресенье является первым днем недели 1 (00–53) %V, %OV√ Номер недели ISO 8601 (01–53) %w, %OwДень недели как число, воскресенье = 0 (0–6). %W, %OWНомер недели, первый понедельник является первым днем недели 1 (00–53) %x, %ExЛокальное «подходящее» представление даты %X, %EXЛокальное «подходящее» представление времени. %y, %Ey, %OyДве последние цифры года (00–99) %Y, %EYГод как число. %ZЛокальный часовой пояс или отсутствие символов, если сведения о часовом поясе недоступны %%Простой %