时区信息数据库

時區資訊資料庫，又稱TZ database、Zoneinfo database，是一個主要應用於電腦程式以及作業系統的，可共同作業編輯世界時區資訊的資料庫。由於該資料庫由David Olson創立，因而有些地方也將其稱作Olson資料庫。資料庫由Paul Eggert進行編輯和維護。
它的顯著特色是由上面提到的Paul Eggert設計的一套通用時區命名規則，例如"America/New_York"和"Europe/Paris"。資料庫試圖記錄自1970年（Unix元年）以來時區和城市的變化，並且還包含一些時間的轉換，例如日光節約時間和閏秒。

歷史

該專案可以追溯至1986年之前。
專案的資料庫和一些涉及到的原始碼已經釋放到公共領域。
通常，資料庫會每年更新若干次，並發布變更公告。

時區的定義

在時區資訊資料庫中，「時區」被定義為自1970年當地時間統一的國家及地區。這種定義方法關注於一個具有相同時間的地理區域，它與其他對時區的定義方法不同的是，其他方法關注於不同時區與本初子午線之間的時差。因而資料庫中定義的每個時區都會記錄一系列對協調世界時的時差，同一時區內一般會包含標準時間和日光節約時間兩種。

時區的命名

為了更容易地理解，每個時區按照「區域/位置」格式，得到一個獨有的名稱，例如「America/New_York」。英文地名中的空格用底線「_」代替，連詞符「-」只在英文地名本身包含時使用。

區域

「區域」指的是大洲、大洋名稱以及Etc。大陸和海洋名稱中包括：非洲、美洲、亞洲、歐洲、大洋洲、南極洲，太平洋、大西洋、印度洋、北冰洋。
Etc用作一些管理時區，具體而言例如「Etc/UTC」，意為協調世界時（Coordinated Universal Time）。為了與POSIX標準統一，以「Etc/GMT」標記的時區將保留時區符號，即在格林威治時間（GMT）以西的區域的時區符號為正，以東區域符號為負。

地點

「地點」指的是是在區域中的特定地點的名稱，通常是城市或小島嶼的名稱。
由於政權更替以及邊界的變動，國家名稱不能穩定地描述一個區域，故不適合用來命名時區。相比之下，大城市的名稱更加固定。然而，資料庫的維護者們想為每一個國家程式碼添加至少一個時區，這樣很多用戶存取資料庫的介面就能夠得到最佳化。另外，（管理者們）還想讓時區的地點在地理上更加緊湊，在未來時區可能發生的變化中，不會將原有的時區分割為不同的時區。
通常會選擇時區內一個人口多的城市作為該時區的名稱，也有使用其他城市名稱的情況，例如使用一些更加有名或不易引起歧義的城市作為名稱。如果一個城市名發生了變化，則會在未來的版本中生成該城市的別名，這樣無論通過哪個名稱存取，結果都會指向資料庫中同一條記錄。
有時候，「地點」本身也是一個複合名稱，例如「America/Indiana/Indianapolis」時區。目前資料庫中存在的三級時區名稱包括：「America/Argentina/...」、「America/Kentucky/...」、「America/Indiana/...」和「America/North_Dakota/...」。
由於「地點」的命名會選取這個區域具有代表性的名稱，因而不是每個城市都有一個以它命名的時區，例如沒有「America/Boston」這個時區。此外，資料庫中不同位置儘管有不同的名稱，它們也有可能目前擁有同一個時區，例如一些歷史上曾經分處不同時區（「America/Detroit」和「America/New_York」）和一些在不同國家的位置（「Europe/Prague」和「Europe/Bratislava」）。

時區資料

對於那些有多個時間偏移（通常指的是標準情況和日光節約時間情況下兩個變數）的時區，時區資訊資料庫會記錄準確的偏移變換時刻。資料記錄的格式也可以將轉換過程中日期和時間的變化記錄起來。

Zone.tab檔案

zone.tab檔案存在於網際網路中，檔案格式的相關說明可參考檔案中的注釋，如下所示：
原文
# This file contains a table with the following columns:
# 1.  ISO 3166 2-character country code.  See the file `iso3166.tab'.
# 2.  Latitude and longitude of the zone's principal location
#     in ISO 6709 sign-degrees-minutes-seconds format,
#     either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
#     first latitude (+ is north), then longitude (+ is east).
# 3.  Zone name used in value of TZ environment variable.
# 4.  Comments; present if and only if the country has multiple rows.
#
# Columns are separated by a single tab.
# The table is sorted first by country, then an order within the country that
# (1) makes some geographical sense, and
# (2) puts the most populous zones first, where that does not contradict (1).
譯文
＃文件中的表格包含以下幾列：
＃1.  ISO 3166 2個字符的國家/地區代碼。詳見文件“ iso3166.tab”。
＃2.時區代表位置的經緯度。
＃ISO 6709標準中為符號-度-分-秒格式，
＃即±度度分分±度度度分分或±度度分分秒秒±度度度分分秒秒，
＃前半部分為緯度（+為北半球），後半部分為經度（+為東半球）。
＃3.時區名稱，利用時區信息數據庫中的環境變量。
＃4.註解，當且僅當該國家有多行記錄時存在。
＃
＃列之間以一個定位字元分隔。
＃表格以國家進行劃分，對國家內部的不同記錄，以下列方式進行排序
＃（1）按照地理位置進行排序
＃（2）在不與（1）衝突的先前下，將人口最多的區域插入首位。

1970年之前的資料

1970年之前的資料由於城市區域的變化需要進行修正，沒有必要對整個區域的時區資訊進行修正，這是由於新劃分的區域僅需要與1970年至今的時鐘進行時差比較。
例如，在1963年10月23日至1963年12月9日，巴西只有米納斯吉拉斯（Minas Gerais）、聖埃斯皮里圖州（Espirito Santo）、里約熱內盧州（Rio de Janeiro）和聖保羅（Sao Paulo）有日光節約時間，由於自1970年以來聖保羅整個區域內時鐘相同，導致一個區域無法從America/Sao_Paulo時區中劃分出來，這是1970年之前的資料需要修正的原因之一。
以柏林時間（Europe/Berlin）為準的德國時間（見Time in Germany），在1945年之後的英、美、蘇三國共同占領區域則是一段時間並未按照柏林時間進行日光節約時間變換。

檔案格式

時區資訊資料庫（Tz database）以文字檔案的形式發布，檔案以可閱讀的形式記錄了的條目規則和時區過渡資訊。為便於使用，這些文字檔案被編譯為與作業系統無關的二進位檔案，每個時區對應一個檔案。相關的程式碼包括，被稱為zic（Zone Information Compiler，時區資訊編譯器），以及用來讀取其他檔案，並將檔案中的時區資訊應用於應用程式介面（例如localtime()和mktime()）。

維護

時區資訊相關的程式碼和資料庫由一群志願者維護。Arthur David Olson側重於程式碼的編輯，Paul Eggert則側重於資料庫。計劃變更的條目會被送到專案的郵寄清單中，在Usenet的comp.time.tz討論組中。專案原始檔發布在FTP伺服器elsie.nci.nih.gov上，這些原始檔被類似於Debian的軟體發行商編譯、打包後成為發行版本中的一部分。終端用戶可以通過對發行版本的升級來更新資料庫，當然這樣更新會有一些滯後，或者直接從ftp://elsie.nci.nih.gov/pub/ 獲得原始碼，自己編譯生成二進位檔案。
基於類似原則的一個未來維護計劃已經由網際網路號碼分配局起草完成。

其他標準下的應用

CLDR（Common Locale Data Repository，通用區域資料庫）使用UN/LOCODE對區域進行判斷。
這意味著字元將與國家對應，這是時區資訊資料庫想要避免的狀況。