tzdata数据库到底是如何使用的?

tzdata数据库到底是如何使用的?

不同的操作系统似乎以不同的方式处理夏令时 (DST)。我真的很喜欢 Cisco IOS 方法,它非常简单,允许更改 DST 开始和结束时的日期和时间。例如:

clock summer-time EDT recurring 2 Sun Mar 2:00 1 Sun Nov 2:00 60

..在 3 月第二周的星期日 2:00 将时钟调快 60 分钟,在 11 月的第一个星期日 2:00 将时钟调慢 60 分钟。 Linux 如何处理夏令时?我知道有一个tzdata包含时区数据文件的包,这些文件安装到/usr/share/zoneinfo/目录中。这些文件如何以及由哪些实用程序使用?我可以在文件中看到 UTC(2) 和时区名称(EET 和 EEST)的变化:

T60:~# strings /usr/share/zoneinfo/posix/Europe/Helsinki
TZif2
    HMT
EEST
TZif2
EEST
EET-2EEST,M3.5.0/3,M10.5.0/4
T60:~# 

另外,M3大概是第三个月,M10第十个月吧?另外,偏移量也应该在某处指定。例如,在 IOS 中,可以配置一旦 DST 发生,时钟就会移动 90 或 120 分钟,而不是 60 分钟。

答案1

如果你看一下有关 TZ 数据库的维基百科页面:

摘抄

文件格式

tz 数据库作为一组文本文件发布,其中以人类可读的格式列出了规则和区域转换。使用时,这些文本文件被编译成一组独立于平台的二进制文件——每个时区一个。参考源代码包括一个名为 zic(区域信息编译器)的编译器,以及读取这些文件并在 localtime() 和 mktime() 等标准 API 中使用它们的代码。

额外的搜索在 stackoverflow 上找到了这个问答,标题为:时区数据库文件格式问题,其中包含有关文件格式的附加信息。

相关内容