是Linux';s时区文件是否始终位于/usr/share/zoneinfo中?

是Linux';s时区文件是否始终位于/usr/share/zoneinfo中?,linux,timezone,Linux,Timezone,我正在写一个程序,需要能够读取Linux上的时区文件。这意味着我需要能够在发行版中始终找到它们。据我所知,它们总是位于/usr/share/zoneinfo中。问题是,它们实际上总是位于/usr/share/zoneinfo中吗?或者是否有发行版将它们放在其他地方?如果是这样,他们把它们放在哪里?包含在Linux上处理时区的代码和数据 公共域时区数据库 包含表示以下内容的代码和数据: 对许多人来说,当地时间的历史 世界各地具有代表性的地点 地球它会定期更新以 反映政治变革 机构到时区边界,UTC

我正在写一个程序,需要能够读取Linux上的时区文件。这意味着我需要能够在发行版中始终找到它们。据我所知,它们总是位于/usr/share/zoneinfo中。问题是,它们实际上总是位于/usr/share/zoneinfo中吗?或者是否有发行版将它们放在其他地方?如果是这样,他们把它们放在哪里?

包含在Linux上处理时区的代码和数据


公共域时区数据库 包含表示以下内容的代码和数据: 对许多人来说,当地时间的历史 世界各地具有代表性的地点 地球它会定期更新以 反映政治变革 机构到时区边界,UTC 偏移和夏令时规则。 此数据库(通常称为tz或 zoneinfo)由多个用户使用 实现,包括GNUC GNU/Linux、FreeBSD、, NetBSD、OpenBSD、Cygwin、DJGPP、AIX、, Mac OS X、OpenVMS、Oracle数据库、, Solaris、Tru64和UnixWare

这涵盖了很多系统,但我只能同意Roman的观点,即任何人都不能因为任何原因而创建不同的发行版。据我所知,zonezinfo文件的存在和位置不受任何官方标准的约束。标准(如POSIX和XPG4)仅建立API。

引用自tzset(3):

使用的系统时区目录取决于(g)libc版本。 Libc4和libc5使用/usr/lib/zoneinfo, 自libc-5.4.6以来, 当这不起作用时,将尝试/usr/share/zoneinfo。 Glibc2将使用环境 变量TZDIR(如果存在)。它的 默认值取决于它的安装方式,但通常是 /usr/share/zoneinfo


但是,请注意,没有任何东西可以阻止某些不正当的发行版修补libc并将文件放在他们想要的任何地方。

“公共域时区数据库”链接