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_timecntunsigned 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 结构.

tzfile - 时区信息的更多相关文章

  1. mysqldump导出数据不带时区信息的问题

    今天在导出数据时,发现所有timestamp字段都不带时区信息,因为我在东8区,导出的数据中所有时间都提早了8个小时 首先先看表的字段和数据 CREATE TABLE IF NOT EXISTS `a ...

  2. Windows中的时区信息

    时区 Windows API 没有提供直接得到特定时区信息的功能,Windows 系统中的时区信息存储在注册表中下面的位置: HKEY_LOCAL_MACHINE     SOFTWARE      ...

  3. log4net写日志的时间附带时区信息

    <conversionPattern value="%date{yyyy-MM-dd HH:mm:ss.fffzzz} [%thread] %-5level %logger - %me ...

  4. 关于linux中的时间 时区问题

    本文部分来源于:  http://hi.baidu.com/peruke/blog/item/b8de06ec6a04583b27979132.html 系统是fedora: glibc实现了从RTC ...

  5. linux 的时区设置函数tzset() 【转】

    linux 的时区设置函数tzset() 本文转载于: http://blog.csdn.net/epicyong333/article/details/5258152 tzset #incude & ...

  6. ISO日期格式标准,浏览器到服务器到mysql中的时区

    时区简单理解 https://zh.wikipedia.org/wiki/%E6%97%B6%E5%8C%BA 上面的链接是时区的wiki说明,下面说说我记住的部分: GMT时区是格林威治标准时间,我 ...

  7. 关于elasticsearch和kibana的时区和日期问题

    elasticsearch原生支持date类型,json格式通过字符来表示date类型.所以在用json提交日期至elasticsearch的时候,es会隐式转换,把es认为是date类型的字符串直接 ...

  8. 时间戳 时区 java mysql

    当一个时间 比如2016年5月6日,生成时间戳.这个运算是与时区有关的.首先得确认这个时间是哪个时区的,然后转换成utc时区的时间.再减去1970,得到的秒数,就是时间戳. 时间戳是个一定的值,他与时 ...

  9. php时区问题

    今天遇到一个很诡异的问题: 数据库中存的日期信息为时间戳,用php取出数据库中的日期信息,并用date()函数转化为“Y-m-d”后,发现和mysql格式化函数Date_Format()处理后的结果不 ...

随机推荐

  1. 给Laravel4添加中文语系(转)

    Laravel 4 官方不附带英文以外的 validataion 错误信息翻译. 今天发现GitHub 上有一个 repository 收集不同的翻译,大家可以下载需要的翻译. GitHub项目地址: ...

  2. python+tushare获取上市公司财务报表:资产负债表

    接口:balancesheet 描述:获取上市公司资产负债表 积分:用户需要至少500积分才可以调取,具体请参阅本文最下方积分获取办法 注:tushare包下载和初始化教程,请查阅我之前的文章 提示: ...

  3. linux性能查看调优

    一 linux服务器性能查看1.1 cpu性能查看1.查看物理cpu个数:cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l ...

  4. mysql中BLACKHOOL的作用

    MySQL在5.x系列提供了Blackhole引擎–"黑洞". 其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉, 不做实际存储:Select语句的内容永远是空. 和Lin ...

  5. multipart/form-data,application/json和application/x-www-form-urlencoded区别

    application/json和application/x-www-form-urlencoded都是表单数据发送时的编码类型. EncType: enctype 属性规定在发送到服务器之前应该如何 ...

  6. 【Elasticsearch 7 探索之路】(六)初识 Mapping

    上一篇主要讲解什么是 URL Search 和 Request Body Search 的语法.本篇对 Mapping 的 Dynamic Mapping 以及手动创建 Mapping 进行讲解. 1 ...

  7. 从Airbnb的发展历程和网易云的大起大落看IT行业创新(第5周课后作业)

    我想先根据个人看法回答“创新是什么?”这个空泛的问题.创新是面对当下的资源条件限制创造出能够满足动态需求或解决动态发展中的问题的新策略.这种实用化定义在大部分邻域都勉强能让定义者自圆其说,对于IT行业 ...

  8. ionic3.0 中带顶部导航的下拉刷新列表的实现

    1.最终实现效果 2.html代码布局: 3.css样式控制(注:下面这两个css类名需在浏览器解析后才可看到)

  9. DQN的第一次尝试 -- 软工结对编程第一次作业

    DQN的第一次尝试 在本篇博客中将为大家形象地介绍一下我对DQN的理解,以及我和我的队友如何利用DQN进行黄金点游戏.最后我会总结一下基于我在游戏中看到的结果,得到的dqn使用的注意事项和这次游戏中我 ...

  10. Gym 101981K bfs

    思路:暴力让所有的骆驼和第一只骆驼合并,比如现在是第k只骆驼和第一只合并,广搜找出第k只骆驼如果想和第一只骆驼合并需要走哪一步,然后走一步,并更新所有骆驼的位置. 代码: #include <b ...