时区数据库和DST

时间:2015-02-11 02:27:49

标签: linux timezone

根据Busybox FAQ,时区的管理方式取决于我的系统的libc。对于我的嵌入式系统,如果我想更改时区,我需要创建一个从/etc/localtime到TZ数据库文件的符号链接,如下所示:

/etc/localtime -> /usr/share/zoneinfo/Etc/GMT+2

我的问题是关于TZ数据库。

Asia/JerusalemEtc/GMT+2之间的区别是什么,因为它在时区GMT+2中是什么?要么; Australia/MelbourneGMT+11之间的区别是什么?

我注意到,例如,墨尔本一年中有GMT+11个月,而一年中剩余的6个月时间为GMT+10

这是TZ数据库中符号链接到城市名称与链接到GMT版本(例如Etc/GMT+11)之间的区别吗?链接到城市名称是否意味着自动处理DST调整,但对于GMT版本则不然?

非常感谢你们!

1 个答案:

答案 0 :(得分:2)

注意:由于您在Busybox的上下文中询问,这不完全是on-topic for Stackoverflow。但是,无论如何,我会继续回答它,因为这里有许多与编程有关的TZ数据库的其他问题,这适用于一般情况。

Asia/Jerusalem等命名时区反映了地理区域的时间。参考点通常(但不总是)是一个城市,它通常(但不总是)是该地区最人口众多的城市 - 不一定是首都。

在此地理区域内,会跟踪所有时区变更历史记录。这包括夏令时更改和基本偏移更改。在其历史记录中,单个时区内可能存在许多更改。您可以在tzdb源代码中查看这些更改的丰富详细信息。例如,here is the entry for Israel

Etc/GMT-2等固定偏移条目主要位于TZDB中,以实现向后兼容。你会在etcetera file中找到它们。它们不适用于任何特定的地理区域,因此没有任何夏令时规则。

另请注意,因为它们是为了向后兼容较旧的POSIX标准而创建的,所以这些偏移的符号与正常情况相反反转。因此,Asia/Jerusalem实际上会在标准时间内与Etc/GMT-2对齐,而在白天时间与Etc/GMT-3对齐。

通常,您应该只使用指定的时区。您可以找到它们的列表on Wikipedia

相关问题