ZIC(8)

NAME
zic - 时区编辑器

总览
zic [ -v ] [ -d directory ] [ -l localtime ] [ -p posixrules ] [ -L leapsecondfilename ] [ -s ] [ -y command ] [ filename ... ]

描述
Zic 从文件中读取文本输入，文件的名字是用命令行指定的； 然后生成时间转换信息文件，此文件由输入指定。 如果 文件名 是 - ，从 标准输入中读取。

可得到以下选项:

-d 目录
    在指定的目录中生成时间转换信息文件，而不是下面的标准 的目录名。

-l 时区
    用给定的时区作为本地时间。 Zic 对此选项的对待如同在输入中有下面格式的连接行

    连接 (从) 时区 (到)本地时间

-p 时区
    当处理 POSIX 格式的时区环境变量时，使用给定的时区规则。 Zic 对此选项的对待如同在输入中有下面格式的连接行

    连接 (从) 时区 (到)POSIX规则

-L 闰秒文件名
    从指定名字的文件中读闰秒信息。 如果不使用本选项,则在输出文件中不出现闰秒信息。

译注: 早期的日期时间度量采用天文方法，GMT (Greenwich Mean
    Time，格林威治平均时) 中的 Greenwich 所指称的是英国的一个 天文台。1948年发明了原子钟，当前使用铯133原子钟的国际原子 时间(TAI)与地球的公转和自转无关。由于地球自转的速度逐渐变 慢，为保持与太阳运动的同相, 当 TAI 与太阳时之间的差距达 到 800ms 时，在太阳时中加入闰秒调快太阳时的时间系统。矫正 后的时间称为 UTC 时间(Universal Coordinated Time，世界时)。 PC 机以本机器内的晶振计时, 没有与 UTC 时间同步的机制。UTC 是法语的缩写。 引自：现代操作系统/Andrew S. Tanebaum 著。-北京: 机械工业 出版社，1999.11。第 11 章，第 11.1.2 节；第 5 章， 第 5.4.1 节。

-v  当出现在数据文件中的年超出了 time(2) 可表示的值的年的范围时提出申诉。 (让用户知道他干不了超出自身能力的事)

-s  限定在输出文件中存储的时间值无论被作为有符号或无符号 均是同一个值。你能用此选项生成 SVVS 兼容文件。

译注: 传统 UNIX 使用三十二位有符号整数计数器以秒为单位计
    时，以1970年1月1日为零起点，在2038年将溢出，负数可表示到 1901年。Linux 使用三十二位无符号整数计数器以秒为单位计时， 以1970年1月1日为零起点，在2106年将溢出。由此决定了时间值 的范围(至少是在 ANSI C 中)。 引自：现代操作系统/Andrew S. Tanebaum 著。-北京: 机械工业 出版社，1999.11。第 5 章，第 5.4.2 节。

-y 命令
    当检测年的类型时，使用给定的 命令 ，而不是 yearistype (见后)

输入行由字段组成。字段之间以白空格字符(空格或 TAB)分隔。 前导和后挂的白空格将被忽略。在输入中的未加引号的 # 号 表示直到其所在行结束的部分是注释。如果要在字段中使用空白和 # 号， 你要把它们用双引号括起来。任何(去除了注释后的)空行将被 忽略。非空行应是以下三种类型之一: 规则行，时区行，连接行。

规则行的格式

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  到...(年)
    给出本规则应用的终止年份。除了上面的 最大 和 最小 ， only 唯一 (或其略写)一词的意思是与 FROM 字段有相同的值。

TYPE  类型
    给出本规则应用的年份类型。如果 TYPE 是 - ，则本规则应用于包含在 FROM 和 TO 之间的所有年份。如果是其他类型，则 Zic 执行下面的命令
    yearistype year type
    来检测某一年的类型: 退出状态 0 表示此年是给定的类型； 退出状态非 0 表示此年不是给定的类型。

IN  在...(月)
    给出本规则有效的月份的名字。月份的名字可用缩写。

ON  在...(日)
    给出本规则有效的日期。可识别的日期的格式包括：

    5    一个月的第 5 天
    lastSun    一个月的最后的星期天
    lastMon    一个月的最后的星期一
    Sun>=8    一个月的第 8 天以后(含第 8 天)的第一个星期天
    Sun<=25    一个月的第 25 天以前(含第 25 天)的最后一个星期天

    星期的名字是可以缩写或全拼。注意在 ON 字段中不能有空格。

AT  在...(时间)
    给出本规则有效的时间。可识别的时间的格式包括：

    2	用小时表示的时间
    2:00	用小时:分钟表示的时间
    15:00	用 24 制小时表示的时间 (表示下午的时间)
    1:28:14	用小时:分钟:秒钟表示的时间

    这里午夜 0 点是一天开始， 午夜 24 点是一天结束。 对于任何以上格式，如果给定的时间是本地的 时间，可以后跟字母 w ； 如果给定的时间是本地的 时间，可以后跟字母 s ； 果给定的时间世界时间，可以后跟字母 u （或 g 或 z ） 如果没写此种指示符，假定是"墙钟"时间。

译注：例如我的"墙钟"时间是北京时间(GMT+8),我的本地标准时间
    是 GMT+9(哈尔滨所在的时区的时间)。

SAVE  补偿
    给出当本规则有效时增加到本地标准时间上的时间量。 本字段与 AT 字段格式相同(当然，未使用 w 和 s 后缀)。

LETTER/S  字母
    给出当本规则有效时时区缩写的 (例如， 的 -，可变部分是空。

时区行格式

Zone	NAME	GMTOFF	RULES/SAVE	FORMAT	[UNTIL]

例如：

Zone	Australia/Adelaide	9:30	Aus	CST	1971 Oct 31 2:00

组成规则行的字段是:

NAME  名字
    时区的名称，被作为为时区而生成的时间转换文件的名字。

GMTOFF  GMT-偏移量
    为得到本时区的标准时间而应加到 UTC 时间上的时间量。 本字段与规则行的 AT 和 SAVE 有相同的格式；字段值是负值 (即以负号开始)表示要从 UTC 时间上减去的时间量。

RULES/SAVE  规则/补偿
    本时区应用的规则的名字，或者是应加到本地标准时间上的 时间量 。如果本字段是 - ，则本时区总是用标准时间。

FORMAT  格式
    本时区的时区缩写的格式。字符对 %s 表示时区缩写的 。另外，/ 符号(斜扛) 分隔标准时和夏令时的缩写。

UNTIL  直到
    是某个位置的 UTC 偏移量或规则改变的时间。它被指定为 某年某月某日某时。如果指定了本字段，直到指定的时间之 后，才会产生从改变了的 UTC 偏移量和规则生成的时区信息。 某年某月某日某时的格式同于规则中的 IN、ON 和 AT 列； 随后的列可以省略，给未写出的列的缺省值是可能的最早的值。

    下一行必须是一个 的行，就是说，除了字符串 和名字省略了之外，与时区行有一样的格式；接续行在上一行 的 UNTIL 字段所指定的时间开始后，按本行的 UTC 偏移量或规 则在上一行名字字段指定的文件中生成时区信息。接续行可以 有象时区行一样的 UNTIL 字段，用于指示下一行是自己的接续。

译注：上面的这段绕口令的意思是
    zome 输出的时区文件名 规则1 规则2生效时间 规则2 规则3生效时间 规则n

连接行格式

Link	LINK-FROM	LINK-TO

例如：

Link	Europe/Istanbul	Asia/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 字段在应增加一秒时是 在其他字段给出的闰秒时间应被解释为 UTC 时间的情况下， R/S 字段应是 S ( 静止一词的缩写)；在其他字段给出的闰秒时间应被解释 为本地墙钟时间的情况下， R/S 字段应是 R(

注意
对于有多于两种类型的本地时间的地区，你可能需要用最早变更时 间的规则的 AT 字段中的本地标准时间，来确保记录在编译的文件 中的最早变更时间是正确的。

相关文件
/usr/local/etc/zoneinfo 生成的文件所在的标准目录。 newctime(3), tzfile(5), zdump(8)

TRANSBY
LinuxForum.Net CMPP 中文手册页计划 http://cmpp.linuxforum.net

* Tue Dec 5 2000 mhss <mhss0@163.com>
- 初始版本