Čo je databáza časových pásiem IANA
Ak ste niekedy pracovali s dátumami a časmi v softvéri, spoliehali ste sa na databázu časových pásiem IANA, či už ste o tom vedeli alebo nie. Poznáme ju pod viacerými názvami – tz databáza, tzdata, Olsonova databáza alebo zoneinfo – ale všetky označujú to isté: kolaboratívny, voľne dostupný katalóg svetových časových pásiem a pravidiel, ktoré ich riadia.
Slovo "katalóg" to podceňuje. Databáza jednoducho neuvádza, ktoré regióny majú aký UTC posun. Zaznamenáva úplnú históriu občianskeho merania času pre každý región – každú zmenu posunu, každý prechod na letný čas, každé vojnové posunutie hodín a každé plánované budúce pravidlo – v mnohých prípadoch až do polovice 19. storočia, keď miestny stredný čas ustúpil štandardizovaným pásmam. Keď váš kalendár správne ukáže, že stretnutie v roku 1985 bolo o hodinu posunuté oproti rovnakému času na hodinách dnes, je to práca tz databázy.
Je textová, čitateľná pre človeka a malá. Skompilovaná binárna forma, ktorá je na vašom počítači, má len niekoľko megabajtov. Napriek tomu kóduje jeden z najtichšie komplikovaných datasetov v informatike.
Stručná história
Projekt začal v 80. rokoch pod vedením Arthura Davida Olsona, ktorý zostavil prvú verziu a hostil ju na serveroch amerického Národného inštitútu zdravia. Po desaťročia bol udržiavaný prevažne dobrovoľníckym úsilím koordinovaným prostredníctvom verejnej mailing listy, preto sa starší názov "Olsonova databáza" stále objavuje v dokumentácii.
Paul Eggert prevzal úlohu hlavného editora a zostáva dlhoročným koordinátorom projektu. Jeho zostavenie sprievodného dokumentu theory.html a dôsledná história commitov urobili z databázy rovnako historickú referenciu ako technickú.
V roku 2011, po krátkom, ale alarmujúcom právnom spore o historické údaje, prešla správa na Internet Assigned Numbers Authority (IANA), rovnakú organizáciu, ktorá koordinuje ďalšie základné internetové zdroje. IANA teraz vydáva oficiálne verzie, preto sa "databáza časových pásiem IANA" stala kanonickým názvom. Prácu stále vykonáva rovnaká komunita prispievateľov; IANA poskytuje inštitucionálny domov a stabilný distribučný bod.
Konvencia pomenovania: Oblasť/Miesto
Jednou z najvýraznejších čŕt databázy je spôsob pomenovania pásiem. Namiesto názvov krajín alebo holých posunov používa formát Oblasť/Miesto, takmer vždy ukotvený k reprezentatívnemu mestu:
America/New_YorkEurope/LondonAsia/KolkataAustralia/Sydney
"Oblasť" je zvyčajne kontinent alebo oceán (America, Europe, Asia, Pacific) a "Miesto" je známe mesto v rámci pásma. Táto voľba vyzerá zvláštne, kým nepochopíte dôvod.
Mestá sú stabilné; politické hranice a posuny nie sú. Krajiny sa rozdeľujú, spájajú, premenúvajú a menia svoje hodiny. Mesto je naopak pevný geografický bod s nepretržitou históriou merania času. Pomenovanie pásma America/New_York namiesto "US Eastern Time" alebo "UTC-5" znamená, že identifikátor zostáva platný, aj keď sa pravidlá k nemu pripojené vyvíjajú.
Databáza sa tiež zámerne vyhýba názvom krajín, aby sa vyhla politickým sporom a pretože jedna krajina často obsahuje niekoľko pásiem – Spojené štáty ich majú viac ako tucet. Vyberá najľudnatejšie alebo historicky najvýznamnejšie mesto v každom odlišnom pásme ako neutrálny štítok. Keď dve oblasti zdieľali rovnakú históriu hodín od roku 1970, zdieľajú jedno pásmo; v momente, keď sa ich histórie rozchádzajú, dostanú samostatné záznamy.
Prečo holé posuny nestačia
Bežnou začiatočníckou intuíciou je uložiť čas ako "UTC+5:30" a hotovo. To funguje pre jeden okamih, ale zlyhá, len čo potrebujete uvažovať o budúcich alebo opakujúcich sa udalostiach, pretože posuny nie sú statické vlastnosti miesta. Sú výstupom pravidiel, ktoré vlády neustále a často náhle menia.
Zvážte niekoľko reálnych príkladov, ktoré databáza musela absorbovať:
- Samoa úplne vynechala 30. december 2011. Aby zosúladila svoj pracovný deň s Austráliou a Novým Zélandom namiesto Spojených štátov, Samoa preskočila cez medzinárodnú dátumovú hranicu a presunula sa z UTC-11 na UTC+13. Pre každého na ostrovoch ten piatok jednoducho neexistoval.
- Krajiny rušia, zavádzajú alebo presúvajú letný čas s malým varovaním. Európska únia diskutovala o zrušení letného času; niekoľko krajín a amerických štátov zmenilo svoje pravidlá letného času v posledných desaťročiach. Turecko, Rusko a ďalšie úplne zmenili svoje štandardné posuny.
- Dátumy začiatku a konca letného času sa posúvajú. Spojené štáty posunuli svoje hranice letného času v roku 2007. Akýkoľvek systém, ktorý mal staré pravidlo natvrdo zakódované, ticho produkoval nesprávne časy na týždne každý rok.
Ak uložíte iba posun, nemôžete odpovedať na otázku "aký bude miestny čas v Santiagu 15. novembra budúceho roka?" – pretože odpoveď závisí od pravidiel, ktoré ešte nemusia byť ani finalizované. Uloženie identifikátora pásma (America/Santiago) plus databáza umožňuje softvéru vypočítať správny posun pre akýkoľvek okamih, minulý alebo budúci, a automaticky ho prepočítať, keď sa pravidlá zmenia.
Toto je základná hodnotová ponuka: tz databáza oddeľuje identitu miesta od neustále sa meniacich pravidiel, ktoré určujú jeho hodiny.
Ako sa udržiava
Údržba prebieha otvorene. Navrhované zmeny – nové pravidlo letného času, opravený historický dátum, vládne oznámenie – sa diskutujú na verejnej tz mailing liste, kde prispievatelia ako dôkaz uvádzajú oficiálne vestníky, spravodajské správy a vládne dekréty. Presnosť sa berie vážne; zmeny historických údajov sa najmä preverujú oproti primárnym zdrojom.
Verzie sú označené rokom a písmenom: 2024a, 2024b, 2024c atď. Číslo je rok; písmeno sa zvyšuje s každým vydaním v danom roku. Keďže vlády oznamujú zmeny hodín podľa vlastných nepredvídateľných harmonogramov, neexistuje pevný harmonogram vydávania – tichý rok môže mať dve vydania, zatiaľ čo rok politických zmien ich má veľa. Očakáva sa, že systémy budú aktualizovať promptne, pretože zastaraná databáza môže znamenať zobrazenie nesprávneho času po nadobudnutí účinnosti zmeny pravidla.
Kto na ňu závisí
Takmer všetko.
- Operačné systémy. Linuxové distribúcie dodávajú
tzdataako základný balík. macOS odvodzuje svoje údaje o pásmach z rovnakého zdroja. Windows používa vlastné pásma založené na registri z historických dôvodov, ale vystavuje pásma IANA prostredníctvom knižnice ICU a moderných API. - Programovacie jazyky. V podstate každá vyspelá knižnica pre dátum/čas číta alebo obsahuje tz databázu: Pythonovo
zoneinfo, Javajava.time, projekt ICU, PostgreSQL, JavaScriptové enginy cez ICU, Ruby, PHP a mnoho ďalších. - Aplikácie. Kalendáre, rezervačné systémy, platformy pre finančné obchodovanie, nástroje na analýzu logov a plánovacie služby sa na ňu spoliehajú, zvyčajne bez toho, aby o tom vývojári premýšľali.
Táto všadeprítomnosť je presne dôvod, prečo na databáze tak záleží. Jediný, zdieľaný, starostlivo udržiavaný zdroj pravdy znamená, že stretnutie naplánované v jednom systéme sa zobrazí správne v inom, naprieč operačnými systémami a jazykmi, desaťročia do minulosti alebo budúcnosti.
Ak chcete preskúmať samotné pásma, prezrite si úplný zoznam časové pásma IANA alebo zistite, ako sú mapované naprieč svetom v našom adresári všetky časové pásma.
Často kladené otázky
Je tz databáza to isté ako tzdata, zoneinfo a Olsonova databáza?
Áno. Toto sú všetky názvy pre rovnaký projekt. "tzdata" zvyčajne označuje dátové súbory zabalené pre operačný systém, "zoneinfo" skompilovaný binárny adresár a "Olsonova databáza" je starší historický názov podľa zakladateľa Arthura Davida Olsona. Dnes je oficiálny názov databáza časových pásiem IANA.
Ako často sa databáza aktualizuje?
Neexistuje pevný harmonogram. Vydania sú spúšťané udalosťami z reálneho sveta – vládou meniacou pravidlá letného času alebo štandardný posun, alebo opravou historických údajov. Niektoré roky majú jedno vydanie; iné niekoľko. Každé je pomenované ako 2024a, 2024b, pričom písmeno sa v priebehu roka zvyšuje.
Prečo pomenúva pásma po mestách ako America/New_York?
Mestá sú geograficky pevné a majú nepretržitú históriu merania času, zatiaľ čo krajiny, hranice a posuny sa časom menia. Použitie reprezentatívneho mesta dáva každému pásmu stabilný, politicky neutrálny identifikátor, ktorý zostáva platný, aj keď sa zmenia základné pravidlá letného času alebo posunu.
Môžem jednoducho uložiť UTC posun namiesto názvu pásma?
Iba pre jeden pevný okamih. Pre budúce alebo opakujúce sa udalosti by ste mali uložiť identifikátor pásma, pretože posuny sa menia s letným časom a vládnymi rozhodnutiami. Názov pásma plus databáza umožňuje softvéru automaticky vypočítať správny posun pre akýkoľvek dátum.
Kto teraz riadi projekt?
Je publikovaný organizáciou IANA, ktorá prevzala správu v roku 2011, a koordinovaný Paulom Eggertom s komunitou prispievateľov pracujúcich na verejnej tz mailing liste. Technická práca zostáva kolaboratívnym, dobrovoľníckym úsilím.