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

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

Жанры

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);

...

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

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

Отмороженный 8.0

Гарцевич Евгений Александрович
8. Отмороженный
Фантастика:
постапокалипсис
рпг
аниме
5.00
рейтинг книги
Отмороженный 8.0

Газлайтер. Том 14

Володин Григорий Григорьевич
14. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 14

Ермак. Телохранитель

Валериев Игорь
2. Ермак
Фантастика:
альтернативная история
7.00
рейтинг книги
Ермак. Телохранитель

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Сборник коротких эротических рассказов

Коллектив авторов
Любовные романы:
эро литература
love action
7.25
рейтинг книги
Сборник коротких эротических рассказов

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

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

Дочь моего друга

Тоцка Тала
2. Айдаровы
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Дочь моего друга

Свет Черной Звезды

Звездная Елена
6. Катриона
Любовные романы:
любовно-фантастические романы
5.50
рейтинг книги
Свет Черной Звезды

Кодекс Крови. Книга IV

Борзых М.
4. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IV

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

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

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12

Лолита

Набоков Владимир Владимирович
Проза:
классическая проза
современная проза
8.05
рейтинг книги
Лолита

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад