Linux repositories inspector
2019-03-06

man-pages-ru

Russian man pages from the Linux Documentation Project

manpages

Manual pages about using a GNU/Linux system

man-pages

Linux kernel and C library user-space interface documentation

tzdata

Sources for time zone and daylight saving time data

ИМЯ

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

ОБЗОР

zic [ параметр … ] [ имя_файла … ]

ОПИСАНИЕ

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

ПАРАМЕТРЫ

--version
Вывод информации о версии и выход из программы.
--help Вывод короткого сообщения об использовании и выход из программы.
-d каталог
Создавать файлы с информацией о переводе времени в заданном каталоге, а не в стандартном каталоге, упомянутом далее.
-l часовой пояс
Использовать часовой пояс в качестве местного времени. В этом случае zic поступит так, как если бы входные данные содержали строку
Link часовой_пояс localtime
-p часовой пояс
Использовать правила часового пояса при обработке соответствующих переменных окружения POSIX. В этом случае zic поступит так, как если бы входные данные содержали строку
Link часовой_пояс posixrules
-L имя файла с високосной секундой
Прочитать информацию о високосной секунде из файла с заданным именем. Если этот параметр не используется, то в выходном файле информация о високосной секунде не появится.
-v Выдавать более подробную информацию и сообщать о следующих ситуациях:
Во входных данных указана ссылка на ссылку.
Год из файла данных выходит за границы диапазона лет, представимого в значениях вызова time(2).
Во входных данных указано время 24:00 или более. До версий 1998 года в zic запрещено значение времени 24:00, а в версиях до 2007 года запрещены значения времени более 24:00.
Правило выходит за начало или конец месяца. До версий zic старше 2004 года это запрещено.
Выходной файл не содержит полной информации об отдалённом будущем часового пояса, так как будущее невозможно выразить в виде расширенной строки POSIX TZ. Например, в 2013 году эта проблема возникла с правилами перехода на летнее время в Иране для описанного будущего, так как эти правила основывались на иранском календаре, который невозможно описать.
В выводе содержатся данные, которые могут неправильно обрабатываться клиентским кодом со старым форматом вывода zic. Эти проблемы совместимости относятся только к меткам времени до 1970 года или после начала 2038 года.
В аббревиатуре часового пояса содержится менее трёх символов. В POSIX требуется не менее 3-х.
Имя выходного файла содержит байт, не являющийся буквой ASCII, \(lq-\(rq, \(lq/\(rq, или \(lq_\(rq; оно содержит компонент имени файла, в котором более 14 байт или который начинается с \(lq-\(rq.
-s Ограничить значения времени в выходных файлах рамками значений из входных файлов, то есть со знаком или без знака. Этот параметр можно использовать для создания SVVS-совместимых файлов.
Входные файлы должны быть текстовыми, то есть, состоять из последовательностей нуля и более строк, каждая из которых заканчивается байтом новой строки, содержит не более 511 байт и не содержит байтов NUL. Кодировка входного текста, обычно, UTF-8 или ASCII; в ней должно быть юнибайтовое представление переносимого набора символов POSIX (PPCS) (http://pubs\:.opengroup\:.org/\:onlinepubs/\:9699919799/\:basedefs/\:V1_chap06\:.html) и кодирование не юнибайтовых символов должно быть полностью из байт не PPCS. Не PPCS символы, обычно, встречаются только в комментариях: хотя имена выходных файлов и сокращения часовых поясов могут содержать практически любые символы, другое ПО будет работать лучше, если здесь ограничиться синтаксисом, описанным в параметре -v.
Входные строки состоят из полей. Поля отделяются друг от друга одним или более пробельным символом. Пробельными символами являются пробел, прогон страницы, возврат каретки, символ новой строки, табуляция и вертикальная табуляция. Начальные и конечные пробелы входных строк игнорируются. С символа диеза (#), если он не кавычках, начинается комментарий, заканчивающийся концом строки. Если в поле нужно использовать символы пробела и диеза, то их нужно заключить в двойные кавычки ("). Любая пустая строка (после удаления комментариев) игнорируется. Непустые строки могут быть трёх типов: строки правил, строки поясов и строки ссылок.
Названия должны быть на английском, не зависят от регистра. Они используются в разных контекстах и включают имена месяца, дня недели и ключевые слова, например, maximum, only, Rolling и Zone. Имена могут быть сокращены посредством пропуска всего кроме начального префикса; любое сокращение должно быть недвусмысленным в контексте.
Строка правила имеет вид
   
Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Например:
Rule US 1967 1973 - Apr lastSun 2:00w1:00 D
Описание полей, из которых состоит строка правила:
NAME Имя списка правил, в который входит эта строка. Оно должно начинаться не с цифры ASCII или \(lq-\(rq или \(lq+\(rq. Для возможных расширений в будущем незакавыченное имя не должно содержать символы \(lq!$%&’()*,/:;<=>?@[\]^‘{|}~\(rq.
FROM Первый год, в котором применяется данное правило. Можно задавать любое знаковое целое значение года; предполагается использование Григорианского календаря с нулевым годом перед первым. Слово minimum (или аббревиатура) означает бесконечное прошлое. Слово maximum (или аббревиатура) означает бесконечное будущее. Правила могут описывать времена, непредставимые как значения времени, такие времена игнорируются; это делает правила переносимыми между машинами с различными типами значений времени.
TO Последний год, в котором применяется данное правило. Вдобавок к minimum и maximum (описанным выше), может использоваться слово only (или аббревиатура), которое означает повторение значения из поля FROM.
TYPE Должно быть равно \(lq-\(rq и оставлено для совместимости со старыми версиями zic, которые не поддерживают тип года.
IN Название месяца, в котором начинает действовать правило. Название месяца может быть аббревиатурой.
ON День, в котором начинает действовать правило. Возможные формы записи:

5 пятый день месяца lastSun последнее воскресенье месяца lastMon последний понедельник месяца Sun>=8 первое воскресенье после 8-го числа включительно Sun<=25 последнее воскресенье перед 25-м включительно
Название дня недели (например, Sunday) или название дня недели, перед которым указывается \(lqlast\(rq (например, lastSunday), может быть аббревиатурой или писаться полностью. Заметим, что в поле ON не должно быть пробелов.
AT Время дня, с которого начинает действовать правило. Возможные формы записи:

2 время в часах 2:00 время в часах и минутах 01:28:14 время в часах, минутах и секундах 15:00 время в 24-часовом формате (для времени после полудня) 260:00 260 часов после 00:00 -2:30 2.5 часа до 00:00 - эквивалентно 0
где час 0 означает полночь и начало нового дня, а час 24 означает полночь и конец дня. Любая из этих форм может заканчиваться символом w, если это местное «по настенным часам» \(lqwall clock\(rq время, s, если это локальное «стандартное» время, \(lqstandard\(rq или u (или g, или z), если это универсальное время; при отсутствии временного индикатора предполагается, что это местное время. Смысл в том, чтобы строка правила описывала моменты времени, когда часы/календарь, установленный в тип времени, указанном в поле AT, будут показывать заданный день и время суток.
SAVE Количество времени, которое будет добавлено к локальному стандартному времени при начале действия правила. Это поле имеет тот же формат, что и поле AT, (хотя, конечно, при этом суффиксы w и s не используются). Допускаются отрицательные смещения; например, в Ирландии переход на летнее время проводят зимой и он задаётся как отрицательное смещение относительно стандартного ирландского времени. Смещение просто добавляется к стандартному времени; например, zic не делает различия между 10:30 по стандартному времени плюс 0:30 SAVE и 10:00 стандартного времени плюс 1:00 SAVE.
LETTER/S Переменная часть \(lqvariable part\(rq (например, \(lqS\(rq или \(lqD\(rq в \(lqEST\(rq или \(lqEDT\(rq) аббревиатуры часового пояса, который используется при действии правила. В этом поле символ \(lq-\(rq, указывает, что переменная часть равна null.
Строка часового пояса имеет вид
   Zone NAME       UTOFF RULES  FORMAT [UNTIL]

Например:
Zone Asia/Amman 2:00 Jordan EE%sT 2017 Oct 27 01:00
Описание полей, из которых состоит строка часового пояса:
NAME Название часового пояса. Это название используется при создании файла с информацией о переводе времени в этом поясе. В нём не должно содержаться компонентов имени файла \(lq.\(dq\(rq или \(lq..\(rq; компонент имени файла — это максимальная подстрока, которая не содержит \(lq/\(rq.
UTOFF Время, которое нужно добавить к UT, чтобы получить стандартное время. Это поле имеет тот же формат, что и поля AT и SAVE в строках правил. Если нужно отнять какое-то время от UT, введите знак минуса в начале поля.
RULES Название правил, которые применяются в часовом поясе, или, иначе говоря, поле в том же формате что и столбец SAVE в строке правила, задающей количество времени, которое нужно добавить к локальному стандартному времени и указывающее, будет ли получаемое время стандартным или летним. Если это поле равно -, то всегда используется стандартное время. Если указано количество времени, то учитывается только сумма стандартного и это количество.
FORMAT
Формат аббревиатур часовых поясов. Пара символов %s используется как положение переменной части \(lqvariable part\(rq аббревиатуры часового пояса. Также в формате можно использовать пару символов %z для обозначения смещения UT в виде ±hh, ±hhmm или ±hhmmss; используется самая короткая форма, при которой не теряется информация, где hh, mm и ss это часы, минуты и секунды восточнее (+) или западнее (-) UT. Косая черта (/) разделяет стандартную аббревиатуру и аббревиатуру летнего времени. Для соответствия POSIX аббревиатура часового пояса должна содержать только буквенно-числовые символы ASCII \(lq+\(rq и \(lq-\(rq.
UNTIL Время, с которого изменяются смещение UT или правила изменения расположения. Оно задаётся как ГОД [МЕСЯЦ [ДЕНЬ [ВРЕМЯ]]]. Если оно задано, то информация о часовом поясе формируется из заданного смещения UT и правила смены до заданного времени, которое учитывается согласно правилам, действовавшим до перехода. Месяц, день и время суток имеют тот же формат, что и поля IN, ON и AT в правиле; последние поля могут не задаваться, а по умолчанию для пропущенных полей действуют самые возможные ранние значения.
Следующей должна быть строка продления \(lqcontinuation\(rq ; она имеет тот же формат, что и строка часового пояса, за исключением того, что в строке пропускается \(lqZone\(rq и название, так как строка продления будет задавать информацию, начиная со времени, указанном в информации \(lquntil\(rq из предыдущей строки в файле, использованном предыдущей строкой. Строки продления могут содержать информацию \(lquntil\(rq , как строки поясов, показывающую, что следующая строка имеет продолжение.
Если пояс изменяется в тот же момент, что и правило вступает в действие в более раннем поясе или строке продолжения, то правило игнорируется. В одиночном поясе является ошибкой, если два правила вступают в силу в один и тот же момент времени или, если смена двух поясов происходит в один и тот же момент времени.
Строка ссылки имеет вид
   Link TARGET          LINK-NAME

Например:
Link Europe/Istanbul Asia/Istanbul
Поле TARGET должно иметь значение как у поля NAME из какой-нибудь строки пояса. Поле LINK-NAME используется для задания альтернативного имени этого часового пояса; оно имеет тот же синтаксис что и поле NAME в строке пояса.
За исключением строк продления, строки могут располагаться в любом порядке. Однако поведение не определено, если несколько поясов или строк ссылок определяют одно имя, или если источник одной строки ссылки является назначением другой.
Строки файла, описывающего високосные секунды, имеют вид:
   
Leap YEAR MONTH DAY HH:MM:SS CORRR/S
Например:
Leap 2016 Dec 31 23:59:60 +S
Поля YEAR, MONTH, DAY и HH:MM:SS задают время, когда случается високосная секунда. Поле CORR должно содержать \(lq+\(rq , если секунда добавляется, или \(lq-\(rq если секунда пропускается. Поле R/S должно равняться \(lqStationary\(rq (в виде аббревиатуры), если время високосной секунды, заданное другими полями, должно интерпретироваться как UTC, или \(lqRolling\(rq (в виде аббревиатуры), если время високосной секунды, заданное другими полями, должно интерпретироваться как местное время.

РАСШИРЕННЫЙ ПРИМЕР

Вот расширенный пример входных данных zic, в котором показано много разных свойств. В этом примере правила EU — для Евросоюза и его предшественника — Европейского сообщества (EC).

# RuleNAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Swiss 1941 1942 - May Mon>=1 1:001:00S Rule Swiss 1941 1942 - Oct Mon>=1 2:000-
Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00S Rule EU 1977 only - Sep lastSun 1:00u 0- Rule EU 1978 only - Oct 1 1:00u 0- Rule EU 1979 1995 - Sep lastSun 1:00u 0- Rule EU 1981 max - Mar lastSun 1:00u 1:00S Rule EU 1996 max - Oct lastSun 1:00u 0-
# ZoneNAME UTOFF RULES FORMAT [UNTIL] Zone Europe/Zurich 0:34:08 - LMT1853 Jul 16 0:29:46 - BMT1894 Jun 1:00 Swiss CE%sT 1981 1:00 EU CE%sT
Link Europe/Zurich Europe/Vaduz
В этом примере часовой пояс называется Europe/Zurich, но он является псевдонимом для Europe/Vaduz. Здесь показано, что Zurich был на 34 минуты и 8 секунд восточнее UT до 1853-07-16 00:00, пока смещение было не изменено законодательно на 7°26'22.50\(sd; хотя это работает до 0:29:45.50, в входном формате нельзя отразить дробные секунды, поэтому здесь они округлены. После 1894-06-01 00:00 смещение UT стало равно одному часу и применяются швейцарские правила перехода на летнее время (определены в строках, начинающиеся с \(lqRule Swiss\(rq) . С 1981 года по настоящее время применяются правила EU для перехода на летнее время, а смещение UTC осталось равным одному часу.
В 1941 и 1942 году летнее время начинается в первый понедельник мая в 01:00 и заканчивается в первый понедельник октября в 02:00. До 1981 года EU правила перехода на летнее время здесь не применяются, но показаны для полноты. Начиная с 1981 года летнее время начинается в последнее воскресенье марта в 01:00 UTC. До 1995 года оно заканчивается в последнее воскресенье сентября в 01:00 UTC, а с 1996 года изменено на последнее воскресенье октября.
Для отображения сначала использовались, соответственно, \(lqLMT\(rq и \(lqBMT\(rq . С момента начали применения швейцарских правил, а позже европейских, аббревиатурой часового пояса обозначение стандартного времени стало CET и CEST для летнего времени.

ФАЙЛЫ

/etc/localtime
Файл локального часового пояса
/usr/share/zoneinfo
Каталог по умолчанию с информацией о часовых поясах

ЗАМЕЧАНИЯ

Для территорий, где имеется более двух типов местного времени, может потребоваться использовать локальное стандартное время в поле AT самого раннего правила перевода времени, чтобы быть уверенным, что самый ранний перевод времени записан в выходной файл правильно.
Если для определённого часового пояса увеличение времени, вызванное началом летнего времени, совпадает и равно уменьшению времени, вызванное изменением в смещении UT, то zic делает один переход на летнее время по новому смещению UT (без изменения местного времени). Чтобы получить раздельные переходы, используйте несколько строк продления поясов, задающих моменты перехода с помощью универсального времени.

СМОТРИТЕ ТАКЖЕ

⇧ Top