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)