摘要:我们深入了解一下通用时区数据库的组织规则,以及时区和夏令时到底是如何维护的,GaussDB(DWS)中又是如何使用的。
本文分享自华为云社区《你应该知道的时区知识之通用时区数据库》,原文作者:leapdb 。
1. 背景介绍
接下来,我们深入了解一下通用时区数据库的组织规则,以及时区和夏令时到底是如何维护的,GaussDB(DWS)中又是如何使用的。
2. 通用时区数据库介绍
各地的时区和夏令时规则由各自的政府独立管理,他们经常在有限的通知下进行变更。而且他们历史数据和未来计划也只是断断续续的记录下来。通用时区数据库试图组织和整理这一领域相关的数据。
时区数据库,通常称为 tz, tzdata 或 zoneinfo,是一组包含大量代码和数据用来表示全球许多有代表性的地点的本地时间的历史信息,他会根据各个政体对时区边界和夏令时规则的改变而不定期的更新。数据库中每一个条目都代表这自1970年以来被广泛认可的民用时钟的时区信息。该数据库被很多项目引用,比如:the GNU C Library (used in GNU/Linux), Android, FreeBSD, NetBSD, OpenBSD, Chromium OS, Cygwin, MariaDB, MINIX, MySQL, webOS, AIX, BlackBerry 10, iOS, macOS, Microsoft Windows, OpenVMS, Oracle Database, 和 Oracle Solaris。GaussDB(DWS)同其它广泛使用的软件产品一样,也是采用了IANA维护的通用时区数据。
该数据库由David Olson创立,由Paul Eggert进行编辑和维护。因而有些地方也将其称作Olson数据库。它的显著特色是由Paul Eggert设计的一套通用时区命名规则,每个时区按照“区域/位置”格式,得到一个独有的名称,例如“America/New_York”。英文地名中的空格用下划线“_”代替,连词符“-”只在英文地名本身包含时使用。时区数据库目前普遍有两个叫法 Olson时区数据库或IANA时区数据库。
奥尔森(Olson)的数据有所变化,部分原因是奥尔森(AD Olson)即将退休,部分原因是针对维护者的版权侵权提起了诉讼(现已撤销)。2011年10月14日,国际互联网名称与名称分配机构(IANA)接管了时区数据库的维护工作。它会定期进行更新以反映各政治实体对时区边界、UTC 差值和夏令时规则的更改。对tz的更新遵循BCP 175流程进行管理。
经常有一些国家变更时区规则,IANA每年都会发布最新的时区数据和解析源码库。IANA提供三种方法对时区数据库的访问:
- https://www.iana.org/time-zones
- ftp://ftp.iana.org/tz/
- rsync://rsync.iana.org/tz/
时区数据库中包含各大洲原始的时区定义的文本文件和解析这些文本文件的代码文件。
2.1 通用时区数据库源码
相关资料:
源码托管地址:https://github.com/eggert/tz 时区数据库的介绍 https://data.iana.org/time-zones/tz-link.html 时区数据库原理及使用 https://data.iana.org/time-zones/theory.html