使用"file /usr/share/zoneinfo/PRC"查看时区文件产生的输出信息:
/usr/share/zoneinfo/PRC: timezone data, version 2, 3 gmt time flags, 3 std time flags, no leap seconds, 27 transition times, 3 abbreviation chars
使用二进制查看工具打开时区文件,对应的关键信息:
00000000: 545a 6966 3200 0000 0000 0000 0000 0000 TZif2...........
00000010: 0000 0000 0000 0003 0000 0003 0000 0000 ................
00000020: 0000 001b 0000 0003 0000 000c 8000 0000 ................
00000030: c859 5e80 c909 f970 c9d3 bd00 cb05 8af0 .Y^....p........
00000040: cb7c 4000 d23b 3ef0 d38b 7b80 d442 adf0 .|@..;>...{..B..
00000050: d545 2200 d64c bff0 d73c bf00 d806 6670 .E"..L...<....fp
00000060: d91d f280 d941 7cf0 1eba 5220 1f69 9b90 .....A|...R .i..
00000070: 207e 84a0 2149 7d90 2267 a120 2329 5f90 ~..!I}."g. #)_.
00000080: 2447 8320 2512 7c10 2627 6520 26f2 5e10 $G. %.|.&'e &.^.
00000090: 2807 4720 28d2 4010 0201 0201 0201 0201 (.G (.@.........
000000a0: 0201 0201 0201 0201 0201 0201 0201 0201 ................
000000b0: 0201 0200 0071 d700 0000 007e 9001 0400 .....q.....~....
000000c0: 0070 8000 084c 4d54 0043 4454 0043 5354 .p...LMT.CDT.CST
000000d0: 0000 0000 0000 0054 5a69 6632 0000 0000 .......TZif2....
1. 基本的头信息
545a 6966 - TZif
32 - version
00 0000 0000 0000 0000 0000 0000 0000 - reserve 15 bytes
0000 0003 - tzh_ttisgmtcnt
0000 0003 - tzh_ttisstdcnt
0000 0000 - tzh_leapcnt
0000 001b - tzh_timecnt
0000 0003 - tzh_typecnt
0000 000c - tzh_charcnt //The number of bytes of timezone abbreviation strings stored in the file.
2. tzh_timecnt four-byte signed integer values sorted in ascending order.
00000020: .... .... .... .... .... .... 8000 0000 ................
00000030: c859 5e80 c909 f970 c9d3 bd00 cb05 8af0 .Y^....p........
00000040: cb7c 4000 d23b 3ef0 d38b 7b80 d442 adf0 .|@..;>...{..B..
00000050: d545 2200 d64c bff0 d73c bf00 d806 6670 .E"..L...<....fp
00000060: d91d f280 d941 7cf0 1eba 5220 1f69 9b90 .....A|...R .i..
00000070: 207e 84a0 2149 7d90 2267 a120 2329 5f90 ~..!I}."g. #)_.
00000080: 2447 8320 2512 7c10 2627 6520 26f2 5e10 $G. %.|.&'e &.^.
00000090: 2807 4720 28d2 4010
3. tzh_timecnt one-byte unsigned integer values;
each one tells which of the different types of local time types described in the file is associated with the time period starting with the same-indexed transition time.
00000090: .... .... .... .... 0201 0201 0201 0201 (.G (.@.........
000000a0: 0201 0201 0201 0201 0201 0201 0201 0201 ................
000000b0: 0201 02
4. tzh_typecnt ttinfo entries, each defined as follows:
struct ttinfo {
int32_t tt_gmtoff;
unsigned char tt_isdst;
unsigned char tt_abbrind; //serves as an index into the array of timezone abbreviation bytes that follow the ttinfo structure(s) in the file.
};
000000b0: .... ..00 0071 d700 0000 007e 9001 0400 .....q.....~....
000000c0: 0070 8000 08
5. tzh_charcnt bytes of timezone abbreviation strings stored in the file.
CST - China Standard Time(中国标准时),tt_gmtoff = 0x7080 = 8 hours
CDT - China Daylight Time(中国夏令时),tt_gmtoff = 0x7e90 = 9 hours
LMT - Local Mean Time(本地平均时), tt_gmtoff = 0x71d7 = 8 hours M minutes N seconds (未使用)
000000c0: .... .... ..4c 4d54 0043 4454 0043 5354 .p...LMT.CDT.CST
000000d0: 00
6. tzh_leapcnt pairs of four-byte values, written in network byte order;
tzh_ttisstdcnt standard/wall indicators, each stored as a one- byte boolean;
tzh_ttisutcnt UT/local indicators, each stored as a one-byte boolean;
000000d0: ..00 0000 0000 00
参考: