П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 180363 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 78653 раз(а).

Учебник HTML.
Просмотров 75671 раз(а).

Руководство по PHP5.
Просмотров 46689 раз(а).

Хостинг через призму DNS.
Просмотров 54144 раз(а).

Подборка текстов стандартных документов.
Просмотров 46602 раз(а).

Учебник PHP - Самоучитель
Просмотров 52783 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 53380 раз(а).

Внешние атаки...
Просмотров 43164 раз(а).

Учебник PHP.
Просмотров 38717 раз(а).

SSI в примерах.
Просмотров 28635 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Руководство пользователя для GNU Awk

12. Встроенные функции

12.5 Функции для действий с отметками времени

Обычное назначение awk-программ состоит в обработке регистрационных файлов с информацией о времени выдачи некоторых записей. Многие регистрационные программы записывают отметки времени в формате службы времени, который содержит число секунд, истекших после определенного момента. В системах POSIX это число секунд после полночи на 1 Января 1970, UTC. Чтобы облегчить обработку таких файлов и выдавать удобные отчеты, gawk предлагает две функции для работы с метками времени. Они обе представляют расширение gawk; их нет ни в стандарте POSIX, ни в других известных версиях awk. Необязательные параметры заключены в квадратные скобки ("[" and "]").

systime()

Эта функция возвращает текущее время как число секунд с системного момента. В системах POSIX это --- число секунд с полуночи 1 Января 1970, UTC. Оно может отличаться от других систем.

strftime([format [, timestamp]])

Эта функция возвращает цепочку . Она подобна функции с тем же именем в ANSI C. Время, указанное в timestamp, выдается в этой цепочке согласно формату в format. timestamp имеет тот же формат, что и значение, возвращаемое функцией systime. Если аргумент timestamp присутствует, gawk использует как отметку времени текущее время дня. Если отсутствует аргумент format, то используется "%a %b %d %H:%M:%S %Z %Y". Эта форматная строка выдает результат (почти) эквивалентный результату утилиты date. (Версии gawk до 3.0 требовали аргумент format.) Функция systime допускает сравнение отметки времени из регистрационного файла с текущим временем. В частности, легко определить, как давно некоторая запись была сделана. Она также позволяет вам сделать регистрационную запись, используя формат "seconds since the epoch". Функция strftime позволяет легко переделать отметку времени в удобную для человека форму. Это по своей природе сходно с функцией sprintf (См. раздел 12.3 [Встроенные функции для манипуляций с цепочками, стр. 137), в том, что она копирует буквально неформатные специальные символы в возвращаемую цепочку, подставляя дату и время для форматной обработки в форматную цепочку.

strftime гарантирует по стандарту ANSI C поддержку следующих спецификаций формата даты:

%a Местные сокращения названий дней недели.
%A Полные местные наименования дней недели.
%b Местные сокращения названий месяцев.
%B Полные местные названия месяцев.
%c Местное "принятое" представление даты и времени.
%d День месяца как десятичное число (01-31).
%H Час как десятичное число (24-час. часы) (00-23).
%I Час как десятичное число (12-час. часы) (01-12).
%j День года как десятичное число (001-366).
%m Месяц как десятичное число (01-12).
%M Минута как десятичное число (00-59).
%p Местный эквивалент для обозначения  AM/PM для 12-час. часов.
%S Секунды как десятичное число (00-60).5
%U Номер недели в году (первое Воскресенье как первый день недели один)
   как десятичное число (00-53).
%w День недели как десятичное число (0-6). Воскресенье как день 0.
%W Номер недели в году (первый Понедельник как первый день недели 1)
   как десятичное число (00-53).
%x Местное "принятое" представление даты.
%X Локальное "принятое" представление времени.
%y Год без столетий как десятичное число (00-99).
%Y Год со столетиями как десятичное число (e.g., 1995).
%Z Имя часового пояса или его сокращение или пусто, если зона не указана.
%% Литерал `%'.

Если спецификатор конверсии отличен от указанных, результат не определен.

6 Неформально, "локальный" означает географическое место, где программа должна исполняться. Например, обычный способ сокращения даты September 4, 1991 в Соединенных Штатах есть "9/4/91". Однако в многих странах Европы это будет "4.9.91". Так, спецификация `%x' в "US" регионе может выдавать `9/4/91', в то время как в регионе "EUROPE" она может выдавать `4.9.91'. Стандарт ANSI C определяет по умолчанию регион "C" как типичный для большинства программистов Си.

5 Изредка имеются минуты в году с несколькими секундами, не больше 60.

6 Это происходит потому, что ANSI C оставляет неопределенным поведение Си версии strftime, если она там есть. Обычно спецификатор конверсии или не появляется в возвращаемой цепочке, или появляется буквально.

Публичная Си-версия strftime поставляется c gawk для систем, которые еще не полностью согласованы с ANSI. Если эта версия использована для компиляции gawk (см. приложение B [Установка gawk], стр. 279), то доступны следующие дополнительные спецификации формата:

%D Эквивалент спецификации `%m/%d/%y'.
%e День месяца, пополненный пробелами в случае одной цифры.
%h Эквивалент для `%b'.
%n Символ новой строки  (ASCII LF).
%r Эквивалент для  `%I:%M:%S %p'.
%R Эквивалент для `%H:%M'.
%T Эквивалент для  `%H:%M:%S'.
%t Символ tab.
%k Часы (24-час. часы) как десятичное число (0-23). Одна цифра дополняется
   пробелом.
%l Часы (12-час. часы) как десятичное число (1-12). Одна цифра дополняется
   пробелом.
%C Столетия как число между  00 и 99.
%u День недели как десятичное число [1 (Понедельник)-7].
%V Номер недели в году (первый понедельник как первый день недели один) как
   десятичное число (01-53). Метод вычисления номера недели указан в ISO 8601
   (а именно: если неделя, содержащая 1 Января, имеет 4 или более дней в
   новом году, то она --- неделя 1, в противном случае это неделя  53 прошлого
   года, и только следующая неделя есть неделя 1).
%G Год со столетиями согласно счету недель по ISO как десятичное число.
   Например, 1 января 1993 лежит в неделе  53 года 1992. По ISO это еще год
  1992, хотя фактически уже 1993. Подобно этому, 31 Декабря 1973 лежит в
  в неделе 1 года 1974. Согласно нумерации недель по ISO, это уже
  год is 1974, хотя фактически еще 1973.
%g Год без столетий по нумерации недель в ISO как десятичное число (00-99).

%Ec %EC %Ex %Ey %EY %Od %Oe %OH %OI %Om %OM %OS %Ou %OU %OV %Ow %OW %Oy

Это "альтернативные представления" для спецификаций, которые используют только вторую букву (`%c', `%C', и т.д.). Они распознаются и используется их нормальные представления.7 (Это --- средство согласования с утилитами POSIX для обработки дат.)

%v Дата в формате VMS (e.g., 20-JUN-1991). %z Зонное смещение времени в формате +HHMM format (например, этот формат необходим для получения заголовков дат RFC-822/RFC-1036 date headers). Этот пример есть реализация в awk средств обработки дат в POSIX. Нормально утилиты дат печатают текущую дату и время в хорошо известном формате. Но если вы дадите в них аргумент, начинающийся с `+', дата скопирует неформатный символ спецификации и будет интерпретировать текущее время соответственно форматному спецификатору в цепочке.

Например:

$ date '+Today is %A, %B %d, %Y.'
a Today is Thursday, July 11, 1991.

Здесь использована версия gawk для утилит данных. Она имеет оболочечную "добавку" для обработки параметра `-u', который требует, чтобы дата воспринималась так, будто временная зона установлена на UTC.

#! /bin/sh # # date --- аппроксимирует P1003.2 'date' command
case $1 in -u) TZ=GMT0 # use UTC
export TZ shift ;; esac
gawk 'BEGIN -
format = "%a %b %d %H:%M:%S %Z %Y" exitval = 0
if (ARGC ? 2)
exitval = 1 else if (ARGC == 2) -
format = ARGV[1] if (format ~ /^"+/)
format = substr(format, 2) # remove leading + "" print strftime(format)&
 exit exitval ""' "$@"

7 Если вы не понимаете что-нибудь из этого, не беспокойтесь; эти средства предназначены для облегчения "интернационализации" программ.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru