tz databáze - tz database

Databáze tz rozděluje svět na regiony, kde jsou od roku 1970 místní hodiny stejné. Tato mapa vytvořená kombinací edice databáze 2017a s daty OpenStreetMap pochází ze všech oblastí mimo Antarktidu.

Databáze tz je kolaborativní kompilace informací o světových časových pásmech , primárně určená pro použití s ​​počítačovými programy a operačními systémy. Paul Eggert je jeho současným redaktorem a správcem s organizačním zázemím ICANN . Databáze tz je také známá jako tzdata , databáze zoneinfo nebo databáze časových pásem IANA a příležitostně také jako databáze Olson , odkazující na zakládajícího přispěvatele Arthura Davida Olsona.

Jeho jednotnou konvenci pojmenování pro časová pásma, jako je Amerika/New_York a Evropa/Paříž , navrhl Paul Eggert. Databáze se pokouší zaznamenat historická časová pásma a všechny civilní změny od roku 1970, unixové časové epochy. Obsahuje také přechody, jako je letní čas , a také zaznamenává přestupné sekundy .

Databáze, stejně jako některé zdrojové kódy referencí , jsou ve veřejné doméně . Nová vydání databáze a kódu jsou publikována jako záruka změn, obvykle několikrát ročně.

Datová struktura

Formáty souborů

Databáze tz je publikována jako sada textových souborů, které uvádějí pravidla a zónové přechody ve formátu čitelném pro člověka. Tyto textové soubory jsou pro použití kompilovány do sady binárních souborů nezávislých na platformě- jeden za časové pásmo. Referenční zdrojový kód obsahuje takový kompilátor s názvem zic (kompilátor zónových informací) a také kód pro čtení těchto souborů a jejich použití ve standardních rozhraních API, jako jsou localtime()a mktime().

Definice časového pásma

V databázi tz je časové pásmo jakýkoli národní region, kde se místní hodiny shodují od roku 1970. Tato definice se týká nejprve geografických oblastí, které mají konzistentní místní hodiny. To se liší od ostatních definic, které se týkají konzistentních offsetů od hlavního meridiánu . Proto každé z časových pásem definovaných databází tz může dokumentovat více ofsetů od UTC , obvykle včetně standardního času i letního času .

V textových souborech časového pásma má každé časové pásmo jeden nebo více "řádků zóny" v jednom z textových souborů časového pásma. První řádek zóny pro časové pásmo udává název časového pásma; všechny následující řádky zón pro toto časové pásmo ponechají název prázdný, což znamená, že platí pro stejné pásmo jako předchozí řádek. Každý řádek zóny pro zónu určuje pro rozsah data a času posun na UTC pro standardní čas, název sady pravidel, která upravují letní čas (nebo pomlčku, pokud vždy platí standardní čas), formát pro zkratky časových pásem a u všech řádků kromě posledního pásma datum a čas, kdy končí rozsah data a času upraveného tímto řádkem.

Pravidla letního času (DST)

Pravidla pro letní čas jsou uvedena v pojmenovaných sadách pravidel. Každá sada pravidel obsahuje jeden nebo více řádků pravidel v textových souborech časového pásma. Řádek pravidla obsahuje název sady pravidel, do které patří, první rok, ve kterém pravidlo platí, poslední rok, ve kterém pravidlo platí (nebo „pouze“, pokud platí pouze v jednom roce, nebo „max“, pokud platí je aktuálně platné pravidlo), typ roku, na který se pravidlo vztahuje („-“ pokud platí pro všechny roky v uvedeném rozsahu, což je téměř vždy případ, jinak název použitý jako argument skriptu, který udává, zda je rok zadaného typu), měsíc, ve kterém pravidlo vstoupí v platnost, den, kdy pravidlo vstoupí v platnost (což může být buď konkrétní den, nebo specifikace typu „poslední neděle v měsíci“) , denní dobu, kdy pravidlo nabývá účinnosti, dobu, kterou je třeba přidat k posunu k UTC, když pravidlo platí, a písmeno nebo písmena, která se mají použít ve zkratce časového pásma (například „S“, pokud pravidlo upravuje standardní čas a „D“, pokud řídí letní čas).

Názvy časových pásem

Časová pásma mají jedinečné názvy ve tvaru „ Oblast / Umístění “, např. „Amerika / New_York“. Bylo také rozhodnuto použít anglická jména nebo ekvivalenty a vynechat interpunkci a běžné přípony. Znak podtržítka se používá místo mezer. Spojovníky se používají tam, kde jsou uvedeny v názvu místa. Názvy Oblast a Umístění mají maximální délku 14 znaků.

Plocha

Oblast je název kontinentu , oceánu nebo „atd.“. V současnosti používané kontinenty a oceány jsou Afrika , Amerika , Antarktida , Arktida , Asie , Atlantik , Austrálie , Evropa , Ind a Pacifik .

Zahrnuty jsou oceány, protože některé ostrovy je obtížné spojit s určitým kontinentem. Někteří jsou geograficky spojeni s jedním kontinentem a politicky s druhým. Viz také Hranice mezi kontinenty .

Zvláštní oblast „Etc“ se používá pro některé administrativní zóny, zejména pro „Etc/UTC“, což představuje koordinovaný světový čas . Aby byly v souladu se stylem POSIX , názvy těchto zón začínající „Etc/GMT“ mají své znaménko obrácené od standardní konvence ISO 8601 . V oblasti „atd.“ Mají zóny západně od GMT kladné znaménko a oblasti na východě ve svém názvu záporné znaménko (např. „Etc/GMT-14“ je 14 hodin před GMT).

Umístění

Poloha je název konkrétní lokality v oblasti - obvykle město nebo malý ostrov.

Názvy zemí se v tomto schématu nepoužívají, především proto, že by nebyly robustní, kvůli častým politickým a hraničním změnám. Názvy velkých měst bývají trvalejší. Obvykle je nejlidnatější město v regionu vybráno tak, aby reprezentovalo celé časové pásmo, ačkoli jiné město může být vybráno, pokud je známější, a jiné umístění, včetně jiného místa než města, může být použito, pokud má za následek méně jednoznačné jméno. V případě, že se změní název umístění, které představuje časové pásmo, je zvykem vytvořit v budoucích edicích alias, aby starý i nový název odkazoval na stejnou položku databáze.

V některých případech je poloha sama reprezentována jako složený název, například časové pásmo „ Amerika/Indiana/Indianapolis “. Mezi tři úrovně patří jména pod „Amerika/Argentina/...“, „Amerika/Kentucky/...“, „Amerika/Indiana/...“ a „Amerika/Severní Dakota/...“.

Vybrané místo je reprezentativní pro celou oblast. Pokud však v oblasti před rokem 1970 existovaly rozdíly, pravidla pro časové pásmo platí pouze v pojmenovaném místě.

Příklady

Amerika/Kostarika název země byl použit, protože název největšího města (a hlavního města) San José je nejednoznačný
Amerika/New_York Prostor nahrazen podtržítkem
Asie/Kalkata používal se název města Kalkata , protože v době zřízení zóny to bylo nejlidnatější město v zóně, i když to již není pravda
Asie/Sachalin používá se název ostrova, protože největší město Južno-Sachalinsk má více než 14 znaků
Amerika/Bahia_Banderas „de“ odstraněno z Bahia de Banderas , protože správný název má více než 14 znaků
Antarktida/DumontDUrville apostrof je odstraněn. Mezera by byla normálně nahrazena „_“, ale název by pak přesáhl 14 znaků.

Příklad zón a řádků pravidel

Toto jsou řádky pravidel pro standardní pravidla amerického letního času, řádky pravidel pro letní čas platné v americkém východním časovém pásmu (nazývaném „NYC“, protože New York City je město představující tuto zónu) v některých letech, a čáry zón pro časové pásmo Amerika/ New_York od verze tzdata2011n databáze časových pásem. Zóny a linie pravidel odrážejí historii DST ve Spojených státech .

# Rule  NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
Rule    US      1918    1919    -       Mar     lastSun 2:00    1:00    D
Rule    US      1918    1919    -       Oct     lastSun 2:00    0       S
Rule    US      1942    only    -       Feb     9       2:00    1:00    W # War
Rule    US      1945    only    -       Aug     14      23:00u  1:00    P # Peace
Rule    US      1945    only    -       Sep     30      2:00    0       S
Rule    US      1967    2006    -       Oct     lastSun 2:00    0       S
Rule    US      1967    1973    -       Apr     lastSun 2:00    1:00    D
Rule    US      1974    only    -       Jan     6       2:00    1:00    D
Rule    US      1975    only    -       Feb     23      2:00    1:00    D
Rule    US      1976    1986    -       Apr     lastSun 2:00    1:00    D
Rule    US      1987    2006    -       Apr     Sun>=1  2:00    1:00    D
Rule    US      2007    max     -       Mar     Sun>=8  2:00    1:00    D
Rule    US      2007    max     -       Nov     Sun>=1  2:00    0       S
....
# Rule  NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER
Rule    NYC     1920    only    -       Mar     lastSun 2:00    1:00    D
Rule    NYC     1920    only    -       Oct     lastSun 2:00    0       S
Rule    NYC     1921    1966    -       Apr     lastSun 2:00    1:00    D
Rule    NYC     1921    1954    -       Sep     lastSun 2:00    0       S
Rule    NYC     1955    1966    -       Oct     lastSun 2:00    0       S
# Zone  NAME            GMTOFF  RULES   FORMAT  [UNTIL]
Zone America/New_York   -4:56:02 -      LMT     1883 November 18, 12:03:58
                        -5:00   US      E%sT    1920
                        -5:00   NYC     E%sT    1942
                        -5:00   US      E%sT    1946
                        -5:00   NYC     E%sT    1967
                        -5:00   US      E%sT

Data uložená pro každou zónu

Pro každé časové pásmo, které má více posunů (obvykle kvůli letnímu času), databáze tz zaznamenává přesný okamžik přechodu. Formát může také obsahovat změny v datech a časech přechodů. Zóny mohou mít historické změny pravidel sahající mnoho desítek let zpět (jak ukazuje příklad výše).

Zone.tab

Soubor zone.tab je ve veřejné doméně a uvádí zóny. Sloupce a třídění řádků jsou v komentářích souboru popsány následovně:

# 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).

Data před rokem 1970

Data před rokem 1970 si kladou za cíl být správná pro město identifikující region, ale nemusí být nutně správná pro celý region. Důvodem je, že nové oblasti se vytvářejí pouze podle potřeby k rozlišení hodin od roku 1970.

Například mezi lety 1963-10-23 a 1963-12-09 v Brazílii měly letní čas pouze státy Minas Gerais , Espirito Santo , Rio de Janeiro a São Paulo . Požadované rozdělení z Ameriky/Sao_Paulo však bylo v roce 2010 zamítnuto s odůvodněním, že od roku 1970 jsou hodiny v celém regionu stejné.

Čas v Německu , který je reprezentován Evropou/Berlínem , není správný pro rok 1945, kdy Trizone používal jiná pravidla pro letní čas než Berlín.

Dosah

Zóny pokrývající více zemí po roce 1970

Existují dvě zóny, které pokrývají oblast pokrytou dvěma zeměmi po roce 1970. Databáze se řídí definicemi zemí podle ISO 3166-1 , jejíž předchůdce ISO 3166 byl poprvé publikován v roce 1974.

Údržba

Tz referenční kód a databázi spravuje skupina dobrovolníků. Arthur David Olson provádí většinu změn v kódu a Paul Eggert v databázi. Navrhované změny se odešlou do mailing listu tz, který je branou do diskusní skupiny comp.time.tz Usenet . Zdrojové soubory jsou distribuovány prostřednictvím serveru IANA FTP. Tyto soubory jsou obvykle převzaty distributorem softwaru, jako je Debian , zkompilovány a poté jsou zdroj a binární soubory zabaleny jako součást této distribuce. Koncoví uživatelé se mohou buď spolehnout na postupy aktualizace jejich distribuce softwaru, což může znamenat určité zpoždění, nebo přímo získat zdroj a vytvořit binární soubory samy. IETF publikoval RFC  6557 , „Postupy za údržbu databáze časové pásmo“, dokumentující nejlepší postupy založené na podobných principech.

Unixové systémy

Standardní cesta pro databázi časových pásem je /usr/share/zoneinfo/ v distribucích Linuxu, macOS a některých dalších unixových systémech.

Použití a rozšíření

Hranice časových pásem

Geografické hranice ve formě sad souřadnic nejsou součástí databáze tz, ale hranice jsou publikovány Ericem Mullerem ve formě vektorových polygonů. Pomocí těchto vektorových polygonů lze pro každé místo na světě určit zónu databáze tz, ve které se nachází.

Použití v jiných normách

Úložiště Unicode Common Locale Data Repository (CLDR) odkazuje na zóny v databázi tz. Jelikož se však název zóny může z jednoho vydání databáze tz změnit na jiné, CLDR přiřadí UN/LOCODE pro město použité v názvu zóny nebo interně přiřazený kód, pokud takové město pro zónu, do zóny tzdb.

Použití v softwarových systémech

Databáze tz se používá pro zpracování časových pásem a převody v mnoha systémech počítačového softwaru, včetně:

ID časových pásem Olson používá také Unicode Common Locale Data Repository (CLDR) a International Components for Unicode (ICU). Tabulka CLDR Windows – Tzid například mapuje ID časových pásem systému Microsoft Windows na standardní názvy Olson, ačkoli takové mapování nemůže být dokonalé, protože počet časových pásem v systémech Windows je výrazně nižší než v databázi IANA TZ.

Dějiny

Počátky projektu sahají do roku 1986 nebo dříve.

2011 soudní spor

Dne 30. září 2011, soudní spor, Astrolabe, Inc. v. Olson et al. , byla podána ohledně autorských práv v databázi. V důsledku toho byly 6. října 2011 uzavřeny seznamy adresátů databáze a server FTP . Případ se točil kolem toho, jak správci databáze používali The American Atlas od Thomas G. Shanks a The International Atlas od Thomas G. Shanks a Rique Pottenger. Stěžovala si na neautorizovanou reprodukci dat atlasu v archivu adresářů časových pásem a v některých sbírkách pomocných odkazů udržovaných s databází, ačkoli ve skutečnosti neukazovala na samotnou databázi. Stížnost se týkala pouze kompilace historických údajů o časových pásmech a nevztahovala se na aktuální tabulky časových pásem tzdata ve světě.

Tato žaloba byla vyřešena dne 22. února 2012 po zapojení Electronic Frontier Foundation , kdy se Astrolabe dobrovolně přestěhoval, aby žalobu zamítl, aniž by kdy sloužil obžalovaným, a souhlasil se smlouvou, že v budoucnu nebude žalovat.

Přesunout do ICANN

ICANN převzala odpovědnost za údržbu databáze dne 14. října 2011. Úplná databáze a popis současných a budoucích plánů její údržby jsou k dispozici online od IANA .

Viz také

Reference

externí odkazy

Všeobecné

Oficiální zdroje IANA

Man stránky

  • zic(8) -  Linux Administration and Privileged Commands Manual (poskytuje syntaxi zdrojových souborů pro databázi tz)
  • tzfile(5) -  Manuál formátů souborů Linux (udává formát kompilovaných databázových souborů tz)