ИМЯ
zic − компилятор часовых поясов
ОБЗОР
zic [ −v ] [ −d каталог ] [ −l местное_время ] [ −p posixrules ] [ −L имя_файла_високосной_секунды ] [ −s ] [ −y команда ] [ имя_файла ... ]
ОПИСАНИЕ
Zic читает текст из файла(ов), имена которых заданы в командной строке и преобразует их в файлы с информацией о переводе времени. Если в качестве имени_файла указан −, то для чтения используется стандартный ввод.
Возможные
параметры:
−d
каталог
Создавать файлы с информацией для перевода времени в заданном каталоге, а не в нижеуказанном стандартном каталоге.
−l часовой пояс
Использовать заданный часовой пояс в качестве местного времени. В этом случае zic поступит так, как если входные данные содержали строку
часовой пояс |
||||||
localtime |
−p часовой пояс
Использовать правила данного часового пояса при обработке соответствующих переменных среды, описанных в стандарте POSIX. В этом случае zic поступит так, как если бы входные данные содержали строку
часовой пояс |
||||||
posixrules |
−L имя_файла_високосной_секунды
Прочитать информацию о високосной секунде из файла с заданным именем. Если этот параметр не используется, то в выходном файле информация о високосной секунде не появится.
−v |
Информировать, если год из файла данных выходит за границы диапазона лет, значения которых может выдавать функция time(2). | ||
−s |
Ограничить значения времени в выходных файлах рамками значений из входных файлов, то есть оставить их какими они были − знаковыми или беззнаковыми. Этот параметр можно использовать для создания SVVS-совместимых файлов. |
−y команда
Использовать заданную команду вместо yearistype при проверке типа года (смотрите ниже).
Входные строки состоят из полей. Поля отделяются друг от друга любым числом пробельных символов. Начальные и конечные пробелы входных строк игнорируются. Символ диеза (#), не находящийся в кавычках, начинает комментарий, заканчивающийся концом строки. Символы пробела и символы диеза могут заключаться в двойные кавычки, если их нужно использовать как часть поля. Любая пустая строка (после удаления комментариев) игнорируется. Непустые строки могут быть трёх типов: строки правил, строки поясов и строки ссылок.
Строка правила имеет вид
Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Например:
US |
1967 |
1973 |
− |
Apr |
||||||
lastSun |
2:00 |
1:00 | ||||||||
D |
Описание полей, из которых состоит строка правила:
NAME |
Определяет (произвольное) имя списка правил, частью которого является данное правило. | ||
FROM |
Задаёт первый год, в котором применяется данное правило. Можно задать любое целое значение года; предполагается использование Грегорианского календаря. Слово minimum (или аббревиатура) означает минимальный год, который может быть задан целым числом. Слово maximum (или аббревиатура) означает максимальный год, который может быть задан целым числом. Правила могут описывать время, которое непредставимо на данной машине, такие времена игнорируются; это делает правила переносимыми между машинами с различными типами значений времени. | ||
TO |
Задаёт последний год, в котором применяется данное правило. Вдобавок к minimum и maximum (описанным выше), может использоваться слово only (или аббревиатура), которое означает повторение значения из поля FROM. | ||
TYPE |
Задаёт тип года, в котором применяется данное правило. Если TYPE равно −, то правило применяется ко всем годам между значениями FROM и TO включительно. Если TYPE равно чему-нибудь ещё, то для проверки типа года zic выполняет команду |
yearistype
год тип
Нулевой
код
завершения
означает,
что год
имеет
заданный
тип. Код
завершения
один
означает,
что год не
заданного
типа.
IN |
Название месяца, в котором начинает действовать правило. Название месяца может быть аббревиатурой. | ||
ON |
Задаёт день, в котором начинает действовать правило. Возможные формы записи: |
5 пятый день месяца
lastSun | ||
последнее воскресенье месяца | ||
lastMon | ||
последний понедельник месяца | ||
Sun>=8 | ||
первое воскресенье после восьмого числа включительно | ||
Sun<=25 | ||
последнее воскресенье перед 25-м числом включительно |
Названия дней недели могут быть аббревиатурой или писаться полностью. Заметим, что в поле ON не должно быть пробелов.
AT |
Задаёт время дня, с которого начинает действовать правило. Возможные формы записи: |
2 время в часах
2:00 | ||
время в часах и минутах | ||
15:00 | ||
24-часовой формат задания времени (для времени после полудня) | ||
1:28:14 | ||
время в часах, минутах и секундах | ||
− | ||
эквивалентно 0 |
где 0 часов означает полночь и начало нового дня, а 24 часа означают полночь и конец дня. Любая из этих форм может заканчиваться символом w, если это местное "по настенным часам" время, s, если это локальное "стандартное" время, или u (или g или z), если это универсальное(по Гринвичу) время; при отсутствии временного индикатора предполагается, что это местное время.
SAVE |
Задаёт количество времени, которое нужно добавить к локальному стандартному времени при начале действия правила. Это поле имеет тот же формат, что и поле AT (хотя, конечно, при этом суффиксы w и s не используются). |
LETTER/S
Задаёт "переменную часть" (например, "S" или "D" в "EST" или "EDT") в аббревиатуре часового пояса, который используется, когда правило начинает действовать. Если это поле равно −, то переменная часть будет пустой.
Строка часового пояса имеет вид
Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
Например:
Australia/Adelaide |
9:30 |
Aus |
CST |
1971 Oct 31 2:00 |
Описание полей, из которых состоит строка часового пояса:
NAME |
Название часового пояса. Это название используется при создании файла с информацией о переводе времени для этого пояса. |
GMTOFF
Время, которое нужно добавить к UTC, чтобы получить стандартное время для этого пояса. Это поле имеет тот же формат, что и поля AT и SAVE в "Rule"-строке. Если нужно отнять какое-то время, используйте знак минуса.
RULES/SAVE
Названия правила, которое используется в этом часовом поясе, или иначе говоря, время, которое нужно добавить к локальному стандартному времени. Если это поле равно −, то в этом часовом поясе всегда используется стандартное время.
FORMAT
Формат аббревиатуры для данного часового пояса. Пара символов %s задаёт "переменную часть" аббревиатуры часового пояса. Косая черта (/) отделяет стандартную аббревиатуру и аббревиатуру летнего времени.
UNTIL |
Время, с которого изменяются смещение UTC или правила. Оно задаётся годом, месяцем, днем и временем дня. Если оно задано, то информация о часовом поясе формируется из заданного смещения UTC и правила, подпадающего под время изменения. Месяц, день, и время дня имеют тот же формат, что и в колонках правил IN, ON и AT; последние колонки могут не задаваться, а по умолчанию для пропущенных колонок действуют самые ранние их значения. |
Далее должна следовать "дополнительная" строка; она имеет тот же формат, что и строка часового пояса, за исключением того, что в строке пропускается "Zone" и название, как если бы дополнительная строка задавала информацию, начинающуюся со времени, указанном в поле UNTIL в предыдущей строке в файле, для использования предыдущей строкой. Дополнительные строки, как и "Zone"-строки, могут содержать поле UNTIL, показывающее, что следующая строка тоже является дополнительной.
Строка ссылки имеет вид
Link LINK-FROM LINK-TO
Например:
Europe/Istanbul |
Asia/Istanbul |
Поле LINK-FROM должно иметь значение поля NAME из какой-нибудь строки часовых поясов; поле LINK-TO используется для задания альтернативного имени этого часового пояса.
За исключением дополнительных, строки могут располагаться в любом порядке.
Строки из файла, описывающего високосную секунду, имеют вид:
YEAR |
MONTH |
DAY |
|||||
HH:MM:SS |
CORR | ||||||
R/S |
Например:
1974 |
Dec |
31 |
|||||
23:59:60 |
+ | ||||||
S |
Поля YEAR, MONTH, DAY, и HH:MM:SS задают время, когда случается високосная секунда. Поле CORR должно содержать "+", если секунда была добавлена или "-", если секунда была пропущена. Поле R/S должно равняться "Stationary" (можно сокращать), если время високосной секунды, заданное другими полями, должно интерпретироваться как UTC, или "Rolling" (можно сокращать), если время високосной секунды, заданное другими полями, должно интерпретироваться как местное время.
ЗАМЕЧАНИЕ
Для областей, где имеется более двух типов местного времени, вам может потребоваться использовать локальное стандартное время в поле AT самого раннего правила перевода времени, чтобы быть уверенным, что самый ранний перевод времени записан в выходной файл правильно.
ФАЙЛ
/usr/local/etc/zoneinfo: стандартный каталог, используемый при создании файлов
СМОТРИ ТАКЖЕ
newctime(3), tzfile(5), zdump(8)
ПЕРЕВОД
Юрий Козлов <y_kozlov [AT] chat.ru>.