Linux программирование в примерах
Шрифт:
6.1.3. Форматирование даты и времени
Примеры в предыдущем разделе показали, как поля в
6.1.3.1. Простое форматирование времени:
Две первые стандартные процедуры, перечисленные ниже, выводят данные в фиксированном формате:
Как
После запуска эта программа выводит результат в виде: '
Рис. 6.1. Возвращаемая функциями
Значительная часть старого кода Unix полагается на тот факт, что значения в возвращенной строке имеют фиксированную позицию. При использовании этих функций помните, что они включают завершающий символ конца строки. Поэтому наш небольшой пример программы использует для
6.1.3.2. Сложное форматирование времени:
Хотя часто достаточно использования
• Формат вывода фиксирован. Нет способа изменить порядок элементов.
• В вывод не включаются сведения о часовом поясе.
• В выводе используются сокращенные названия месяца и дня.
• В выводе используются английские названия месяцев и дней.
По этим причинам C89 ввело стандартную библиотечную процедуру
Буфер для форматированной строки.
Размер
буфера.Форматирующая строка.
Указатель на
Форматирующая строка содержит символы букв, смешанные о описателями преобразования, указывающими, что должно быть помещено в строку, такими, как полное имя дня недели, час в соответствии с 24-часовым или 12-часовым циклом, наличие указателей am или p.m [64] , и т.д. (Вскоре будут приведены примеры.)
64
a.m. — от ante meridiem (до полудня), p.m. — от post meridiem (пополудни), американская система обозначения 12-часового цикла времени суток. — Примеч. перев.
Если всю строку можно отформатировать с использованием не более
После запуска эта программа выводит что-то типа:
В табл. 6.2 предоставлен полный список описателей преобразования, их возможные альтернативные представления и их значения. Вдобавок стандарт C99 добавил к списку дополнительные описатели; новые для C99 описатели помечены символом √.
Таблица 6.2. Описатели преобразования формата
Описатель | C99 | Значение |
---|---|---|
%a | Локальное сокращенное название дня недели. | |
%A | Локальное полное название дня недели. | |
%b | Локальное сокращенное название месяца. | |
%B | Локальное полное название месяца. | |
%c, %Ec | Локальное «подходящее» представление даты и времени | |
%C, %EC | √ | Век (00–99) |
%d, %Od | День месяца (01–31) |