NAME¶
tzfile - 时区信息
SYNOPSIS¶
#include <tzfile.h>
DESCRIPTION¶
时区信息文件被
tzset(3)
使用,
其开头为特征字符"TZif",
以此
标示该文件为时区信息文件,
随后六个字节保留未用.
接下来是六
个"标准"字节顺序(高位在前)的四字节
long 类型值, 按顺序描述
如下:
- tzh_ttisgmtcnt
- 保存在文件中的UTC/local指示器数目.
- tzh_ttisstdcnt
- 保存在文件中的standard/wall指示器数目.
- tzh_leapcnt
- 其值保存在文件中的leap
second的数目
- tzh_timecnt
- 其值保存在文件中的"变化时间"数目
- tzh_typecnt
- 其值保存在文件中的"本地时间类型"数目(非零!)
- tzh_charcnt
- 保存在文件中的"时区简写符"数目
跟在上面这些头部后的是
tzh_timecnt
个"标准"字节顺序的四字
节
long 类型值,
以升序排序.
每个值均作为一个变化时间(就像
time(2) 的返回),
系统依赖这些值来计算本地时间变化.
而在此 之后的是
tzh_timecnt
个
unsigned char
类型的一字节值, 这些
值指出了文件中描述的多种"本地时间"类型中哪一个与具有相同索
引的变化时间相关.
这些值可作为
ttinfo
结构数组的索引. 而
ttinfo
结构在文件中随后就有定义,
描述如下:
struct ttinfo {
long tt_gmtoff;
int tt_isdst;
unsigned int tt_abbrind;
};
结构包括一个"标准"字节顺序的四字节
long 类型值
tt_gmtoff,
以及一个一字节的
tt_isdst 和一个一字节的
tt_abbrind. 在每 个结构里,
tt_gmtoff
给出了要被加到UTC的时间,
以秒为单位,
tt_isdst 表明
tm_isdst 是否可通过
localtime (3)
设置, 而
tt_abbrind
可作为时区简写符的数组索引,
该数组在文件中跟在
ttinfo 结构后面.
这样就有
tzh_leapcnt
个标准字节顺序的四字节对,
每个四字节
对的第一个值给出一个leap
second发生的时间, 就如
time(2) 的返回;
每个四字节对的第二个值给出给定时间之后所实现的总的
leap second数.
四字节对按时间的升序排序.
同样有
tzh_ttisstdcnt
个standard/wall指示器,
每个保存了一
个一字节值;
这些指示器指出了变化时间(与本地时间类型相关)是
否被说明为standard time或者wall
clock time, 以及当一个时区
文件被用于处理POSIX
格式时区环境变量时是否使用变化时间.
最后, 有
tzh_ttisgmtcnt
个UTC/local指示器,
每个保存了一个
一字节值;
这些指示器指出了变化时间(与本地时间类型相关)是否
被说明为UTC 或者local time,
以及当一个时区文件被用于处理
POSIX格式时区环境变量时是否使用变化时间.
如果
tzh_timecnt
等于零或者时间参数比文件记录的第一个变化
时间小的话,
Localtime
就使用文件中的第一个标准时间
ttinfo,
或者在没有标准时间结构是就直接使用第一个
ttinfo 结构.
SEE ALSO¶
newctime(3)