Чтение онлайн

на главную - закладки

Жанры

Linux программирование в примерах

Роббинс Арнольд

Шрифт:
%p
Локальное обозначение a.m./p.m.
%r
√ Локальное время в 12-часовом цикле
%R
√ Тоже, что и
%H:%M
%S, %OS
Секунда в виде числа (00–60)
%t
√ Символ табуляции ('
\t
')
%T
√ То же, что и
%H:%M:%S
(формат ISO 8601).
%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
Локальный часовой пояс или отсутствие символов, если сведения о часовом поясе недоступны
%%
Простой
%

Локаль (locale) является способом описания местной специфики, принимая во внимание такие вещи, как язык, кодировка символов и значения по умолчанию для форматирования дат, времени, денежных сумм и т.д. Мы будем иметь с ними дело в главе 13 «Интернационализация и локализация». Пока достаточно понять, что результаты

strftime
для одной и той же форматирующей строки могут быть разными в зависимости от настроек текущей локали.

Версии, начинающиеся с

%E
и
%O
, предназначены для «альтернативного представления». В некоторых локалях есть несколько способов представления одних и тех же сведений; эти описатели предоставляют доступ к дополнительным представлениям. Если определенная локаль не поддерживает альтернативного представления,
strftime
использует обычную версию.

Многие Unix-версии

date
дают возможность предоставить в командной строке форматирующую строку, начинающуюся с символа '
+
'. Затем
date
форматирует текущие дату и время и выводит в соответствии с форматирующей строкой:

$ date + 'It is now %A, %B %d, %Y, %I:%M %p'

It is now Sunday, May 25, 2003, 06:44 PM

Большинство новых описателей C99 происходит от таких существующих реализаций

date
Unix. Описатели
%n
и
%t
не являются в С абсолютно необходимыми, поскольку символы табуляции и конца строки могут быть помещены в строку непосредственно. Однако в контексте форматирующей строки
date
для командной строки они имеют больше смысла. Поэтому они также включены в спецификацию
strftime
.

Стандарт ISO 8601 определяет (среди других вещей), как нумеруются недели в пределах года. В соответствии с этим стандартом недели отсчитываются с понедельника по воскресенье, а понедельник является днем недели 1, а не 0. Если неделя, в которой оказывается 1 января, содержит по крайней мере четыре дня нового года, она считается неделей 1. В противном случае, это последняя неделя предыдущего года с номером 52 или 53. Эти правила используются для вычислений описателей форматов

%g
,
%G
и
%V
. (Хотя ограниченным американцам, таким, как автор, эти правила могут показаться странными, они обычно повсюду используются в Европе.)

Многие из описателей стандартов дают результаты, специфичные для текущей локали. Вдобавок некоторые указывают, что они выдают «подходящее» представление для локали (например,

%x
). Стандарт C99 определяет значения для локали «С». Эти значения перечислены в табл. 6.3

Таблица 6.3. Значения локали «С» для определенных форматов

strftime

Описатель Значение
Первые три символа
.
Один из дней Sunday, Monday, …, Saturday
%b
Первые три символа
Один из месяцев January, February, …, December
То же, что и
%а %b %е %T %Y
%p
AM или PM
%r
То же, что и
%I:%M:%S %p
%x
То же, что и
%m/%d/%y
%X
То же, что и
%T
.
%Z
Определяется реализацией

Должно быть очевидно, что

strftime
предоставляет значительную гибкость и контроль над связанным с датой и временем выводом, во многом таким же образом, как
printf
и
sprintf
. Более того,
strftime
не может переполнить буфер, поскольку она проверяет входной параметр размера, что делает ее более безопасной процедурой, чем
sprintf
.

В качестве простого примера рассмотрим создание файлов журнала программы, когда каждый час создается новый файл. Имя файла должно включать дату и время создания:

/* Проверка ошибок для краткости опущена */

char fname[PATH_МАХ]; /* PATH_МАХ находится в <limits.h> */

time_t now;

struct tm *tm;

int fd;

time(&now);

tm = localtime(&now);

strftime(fname, sizeof fname, "/var/log/myapp.%Y-%m-%d-%H:%M", tm);

fd = creat(name, 0600);

...

Формат год-месяц-день-час-минута вызывает сортировку файлов в том порядке, в каком они были созданы.

Поделиться:
Популярные книги

Эволюционер из трущоб. Том 2

Панарин Антон
2. Эволюционер из трущоб
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Эволюционер из трущоб. Том 2

На границе империй. Том 10. Часть 8

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 8

Древесный маг Орловского княжества 4

Павлов Игорь Васильевич
4. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 4

Кукловод

Злобин Михаил
2. О чем молчат могилы
Фантастика:
боевая фантастика
8.50
рейтинг книги
Кукловод

Афганский рубеж 4

Дорин Михаил
4. Рубеж
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Афганский рубеж 4

Третий Генерал: Том III

Зот Бакалавр
2. Третий Генерал
Фантастика:
попаданцы
рпг
аниме
5.00
рейтинг книги
Третий Генерал: Том III

Бастард Императора. Том 15

Орлов Андрей Юрьевич
15. Бастард Императора
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Бастард Императора. Том 15

На границе империй. Том 9. Часть 2

INDIGO
15. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 2

Младший сын

Балашов Дмитрий Михайлович
1. Государи московские
Научно-образовательная:
история
8.50
рейтинг книги
Младший сын

Идеальный мир для Лекаря

Сапфир Олег
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря

На границе империй. Том 3

INDIGO
3. Фортуна дама переменчивая
Фантастика:
космическая фантастика
5.63
рейтинг книги
На границе империй. Том 3

Князь Целитель 2

Ткачев Андрей Юрьевич
2. Князь Целитель
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Князь Целитель 2

Кодекс Охотника. Книга XIII

Винокуров Юрий
13. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XIII

Analyste

Мелехов Андрей Михайлович
Аналитик
Фантастика:
социально-философская фантастика
юмористическая фантастика
6.57
рейтинг книги
Analyste