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)