zic(8) компилятор часовых поясов

ОБЗОР

zic [ -v ] [ -d каталог ] [ -l местное_время ] [ -p правила_posix ] [ -L имя_файла_високосной_секунды ] [ -s ] [ -y команда ] [ имя_файла ... ]

ОПИСАНИЕ

Zic читает текст из файла(ов), имя которого задано в командной строке и создаёт файлы с информацией о переводе времени. Если в качестве имени_файла указан символ -, то для чтения используется стандартный ввод.

Возможные параметры:

-d каталог
Создавать файлы с информацией для перевода времени в заданном каталоге, а не в нижеуказанном стандартном каталоге.
-l часовой_пояс
Использовать заданный часовой пояс в качестве местного времени. В этом случае zic поступит так, как если входные данные содержали строку


      Link      часовой_пояс         localtime

-p часовой_пояс
Использовать правила данного часового пояса при обработке соответствующих переменных окружения, описанных в стандарте POSIX. В этом случае zic поступит так, как если бы входные данные содержали строку


      Link      часовой_пояс         posixrules

-L имя_файла_високосной_секунды
Прочитать информацию о високосной секунде из файла с заданным именем. Если этот параметр не используется, то в выходном файле информация о високосной секунде не появится.
-v
Информировать, если год из файла данных выходит за границы диапазона лет, значения которых может выдавать функция time(2).
-s
Ограничить значения времени в выходных файлах рамками значений из входных файлов, то есть оставить их какими они были --- знаковыми или беззнаковыми. Этот параметр можно использовать для создания SVVS-совместимых файлов.
-y команда
Использовать заданную команду вместо yearistype, при проверке типа года (смотрите ниже).

Входные строки состоят из полей. Поля отделяются друг от друга любым числом пробельных символов. Начальные и конечные пробелы входных строк игнорируются. С символа диеза (#), не находящегося в кавычках, начинается комментарий, заканчивающийся концом строки. Если в поле нужно использовать символы пробела и диеза, то их нужно заключить в двойные кавычки ("). Любая пустая строка (после удаления комментариев) игнорируется. Непустые строки могут быть трёх типов: строки правил, строки поясов и строки ссылок.

Строка правила имеет вид


      Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Например:
      Rule 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 год тип
Нулевой код завершения означает, что год имеет указанный тип. Код завершения 1 означает, что год не заданного типа.
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
Задаёт (например, или в или аббревиатуре часового пояса, который используется, когда правило начинает действовать. Если это поле равно -, то переменная часть будет пустой.

Строка часового пояса имеет вид


      Zone NAME UTCOFF RULES/SAVE FORMAT [UNTIL]
Например:

     Zone Australia/Adelaide 9:30 AusCST1971 Oct 31 2:00
Описание полей, из которых состоит строка часового пояса:
NAME
Название часового пояса. Это название используется при создании файла с информацией о переводе времени для этого пояса.
UTCOFF
Время, которое нужно добавить к UTC, чтобы получить стандартное время для этого пояса. Это поле имеет тот же формат, что и поля AT и SAVE строках правил. Если нужно отнять какое-то время от UTC, введите знак минуса в начале поля.
RULES/SAVE
Названия правил(а), которые используются в этом часовом поясе, или иначе говоря, время, которое нужно добавить к локальному стандартному времени. Если это поле равно -, то в этом часовом поясе всегда используется стандартное время.
FORMAT
Формат аббревиатуры для данного часового пояса. Пара символов %s задаёт аббревиатуры часового пояса. Косая черта (/) разделяет стандартную аббревиатуру и аббревиатуру летнего времени.
UNTIL
Время, с которого изменяются смещение UTC или правила. Оно задаётся годом, месяцем, днем и временем дня. Если оно задано, то информация о часовом поясе формируется из заданного смещения UTC и правила, подпадающего под время изменения. Месяц, день и время дня имеют тот же формат, что и в колонках правил IN, ON и AT; последние колонки могут не задаваться, а по умолчанию для пропущенных колонок действуют самые ранние их значения.
Далее должна следовать строка; она имеет тот же формат, что и строка часового пояса, за исключением того, что в строке пропускается и название, как если бы дополнительная строка задавала информацию, начинающуюся со времени, указанном в поле UNTIL в предыдущей строке в файле, для использования предыдущей строкой. Дополнительные строки могут содержать поле UNTIL как и строки пояса, показывающее, что следующая строка тоже является дополнительной.

Строка ссылки имеет вид


      Link LINK-FROM LINK-TO
Например:

     Link Europe/IstanbulAsia/Istanbul
Поле LINK-FROM должно иметь значение поля NAME из какой-нибудь строки часовых поясов; поле LINK-TO используется для задания альтернативного имени этого часового пояса.

За исключением дополнительных, строки могут располагаться в любом порядке.

Строки из файла, описывающего високосные секунды, имеют вид:


     
Leap YEAR MONTH DAY HH:MM:SS CORR R/S
Например:
     
Leap 1974 Dec 31 23:59:60 + S
Поля YEAR, MONTH, DAY и HH:MM:SS задают время, когда случается високосная секунда. Поле CORR должно содержать , если секунда была добавлена, или если секунда была пропущена. Поле R/S должно равняться (в виде аббревиатуры), если время високосной секунды, заданное другими полями, должно интерпретироваться как UTC, или (в виде аббревиатуры), если время високосной секунды, заданное другими полями, должно интерпретироваться как местное время.

ФАЙЛЫ

/usr/local/etc/zoneinfo
Стандартный каталог, используемый при создании файлов.

ЗАМЕЧАНИЯ

Для территорий, где имеется более двух типов местного времени, вам может потребоваться использовать локальное стандартное время в поле AT самого раннего правила перевода времени, чтобы быть уверенным, что самый ранний перевод времени записан в выходной файл правильно.