The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

strftime (3)
  • strftime (3) ( Solaris man: Библиотечные вызовы )
  • strftime (3) ( FreeBSD man: Библиотечные вызовы )
  • >> strftime (3) ( Русские man: Библиотечные вызовы )
  • strftime (3) ( Linux man: Библиотечные вызовы )
  • strftime (3) ( POSIX man: Библиотечные вызовы )
  •  

    НАЗВАНИЕ

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

    СИНТАКСИС

    #include <time.h>
    
    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 описан в <time.h>. Смотрите также 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.  

    НАЙДЕННЫЕ ОШИБКИ

    Некоторые сбойные версии gcc сообщают об использовании %c: внимание: в некоторых локалях `%c' может содержать только последние 2 цифры года. Естественно, что программисты после этого спокойно используют %c, оно дает нужное им представление даты и времени. А потом появляются странные проблемы в этих gcc. Относительно спокойным решением этой проблемы является создание промежуточной функции
    size_t my_strftime(char *s, size_t max, const char *fmt, const struct tm *tm) {

            return strftime(s, max, fmt, tm);
    }
     

    СМ. ТАКЖЕ

    date(1), time(2), ctime(3), setlocale(3), sprintf(3)


     

    Index

    НАЗВАНИЕ
    СИНТАКСИС
    ОПИСАНИЕ
    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
    ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ
    СООТВЕТСТВИЕ СТАНДАРТАМ
    НАЙДЕННЫЕ ОШИБКИ
    СМ. ТАКЖЕ


    Поиск по тексту MAN-ов: 




      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor