Mi is valójában az IANA Időzóna Adatbázis
Ha valaha is dolgoztál dátumokkal és időkkel szoftverfejlesztés során, akkor már támaszkodtál az IANA Időzóna Adatbázisra, akár tudtál róla, akár nem. Több néven is ismert – tz adatbázis, tzdata, Olson adatbázis vagy zoneinfo –, de mind ugyanarra utalnak: egy együttműködésen alapuló, szabadon hozzáférhető katalógusra a világ időzónáiról és az azokat szabályozó szabályokról.
A "katalógus" szó alulbecsüli a dolgot. Az adatbázis nem csupán felsorolja, hogy mely régiók milyen UTC-eltolással rendelkeznek. Rögzíti az egyes régiók teljes civil időszámításának történetét – minden eltolás-változást, minden nyári időszámításra való átállást, minden háborús óraállítást és minden ütemezett jövőbeli szabályt –, sok esetben egészen a 19. század közepéig visszamenőleg, amikor a helyi középidőt felváltották a szabványosított zónák. Amikor a naptárad helyesen mutatja, hogy egy 1985-ös megbeszélés egy órával eltért a mai azonos faliórai időtől, az a tz adatbázis munkája.
Szövegalapú, ember által olvasható és kicsi. A lefordított bináris formátum, amely a számítógépeden fut, csak néhány megabájt. Mégis a számítástechnika egyik legcsendesebben összetett adathalmazát kódolja.
Rövid történet
A projekt az 1980-as években kezdődött Arthur David Olson vezetésével, aki összeállította az első verziót, és az Egyesült Államok Nemzeti Egészségügyi Intézeteinek (NIH) szerverein tárolta. Évtizedekig nagyrészt önkéntes erőfeszítéssel tartották fenn, egy nyilvános levelezőlistán koordinálva, ezért az "Olson adatbázis" régebbi név még mindig előfordul a dokumentációban.
Paul Eggert vette át a főszerkesztői szerepet, és azóta is ő a projekt hosszú távú koordinátora. A kísérő theory.html dokumentum és a precíz commit-történet összeállításával az adatbázist ugyanúgy történelmi referenciává tette, mint technikaivá.
2011-ben, egy rövid, de riasztó jogi vita után a történelmi adatokkal kapcsolatban, a gondnokság az Internet Assigned Numbers Authority (IANA)-hoz került, ugyanahhoz a szervezethez, amely más alapvető internetes erőforrásokat is koordinál. Az IANA ma hivatalos kiadásokat publikál, ezért az "IANA időzóna adatbázis" lett a kanonikus név. A munkát továbbra is ugyanaz a közösség végzi; az IANA intézményi otthont és stabil terjesztési pontot biztosít.
Az elnevezési konvenció: Terület/Hely
Az adatbázis egyik legjellegzetesebb tulajdonsága, hogy hogyan nevezi el a zónákat. Országnevek vagy nyers eltolások helyett Terület/Hely formátumot használ, szinte mindig egy reprezentatív városhoz kötve:
America/New_YorkEurope/LondonAsia/KolkataAustralia/Sydney
A "Terület" általában egy kontinens vagy óceán (America, Europe, Asia, Pacific), a "Hely" pedig egy jól ismert város a zónán belül. Ez a választás furcsának tűnik, amíg meg nem érted a mögöttes okot.
A városok stabilak; a politikai határok és eltolások nem. Az országok szétválnak, egyesülnek, átnevezik magukat és megváltoztatják az óráikat. Ezzel szemben egy város egy rögzített földrajzi pont, folyamatos időszámítási történettel. Egy zónát America/New_York-nak nevezni a "US Eastern Time" vagy "UTC-5" helyett azt jelenti, hogy az azonosító érvényes marad, még akkor is, amikor a hozzá kapcsolódó szabályok fejlődnek.
Az adatbázis szándékosan kerüli az országneveket, hogy elkerülje a politikai vitákat, és mert egyetlen ország gyakran több zónát is tartalmaz – az Egyesült Államoknak több mint egy tucatja van. A legnépesebb vagy történelmileg legjelentősebb várost választja ki az egyes eltérő zónákban semleges címkeként. Amikor két régiónak 1970 óta azonos az óra-története, egy zónát osztanak meg; amint a történeteik eltérnek, külön bejegyzéseket kapnak.
Miért nem elegendőek a nyers eltolások
Egy gyakori kezdő ösztön az, hogy az időt "UTC+5:30"-ként tároljuk, és kész. Ez egyetlen pillanatra működik, de összeomlik, amint jövőbeli vagy ismétlődő eseményekről kell gondolkodnod, mert az eltolások nem egy hely statikus tulajdonságai. Ezek olyan szabályok kimenetei, amelyeket a kormányok folyamatosan és gyakran hirtelen változtatnak.
Íme néhány valós példa, amelyet az adatbázisnak fel kellett dolgoznia:
- Szamoa teljesen kihagyta 2011. december 30-át. Hogy üzleti napjait az Egyesült Államok helyett Ausztráliához és Új-Zélandhoz igazítsa, Szamoa átugrotta a Nemzetközi Dátumválasztó vonalat, UTC-11-ről UTC+13-ra váltva. A szigeteken élők számára az a péntek egyszerűen nem létezett.
- Országok rövid határidővel szüntetik meg, vezetik be vagy ütemezik át a nyári időszámítást. Az Európai Unió vitatta a nyári időszámítás megszüntetését; több ország és amerikai állam is megváltoztatta a nyári időszámításra vonatkozó szabályait az elmúlt évtizedekben. Törökország, Oroszország és mások egyenesen megváltoztatták a szabványos eltolásukat.
- A nyári időszámítás kezdő és záró dátumai eltolódnak. Az Egyesült Államok 2007-ben módosította a nyári időszámítás határait. Bármely rendszer, amely a régi szabályt rögzítette, csendesen rossz időket produkált heteken keresztül minden évben.
Ha csak egy eltolást tárolsz, nem tudod megválaszolni a kérdést: "mi lesz a helyi idő Santiago-ban jövő év november 15-én?" – mert a válasz olyan szabályoktól függ, amelyek talán még nem is véglegesek. A zónaazonosító (America/Santiago) tárolása az adatbázissal együtt lehetővé teszi a szoftver számára, hogy kiszámítsa a helyes eltolást bármely múltbeli vagy jövőbeli pillanatra, és automatikusan újraszámolja, amikor a szabályok változnak.
Ez az alapvető értékajánlat: a tz adatbázis elválasztja egy hely identitását az örökké változó szabályoktól, amelyek meghatározzák az óráját.
Hogyan tartják karban
A karbantartás nyíltan történik. A javasolt változtatásokat – egy új nyári időszámítási szabály, egy javított történelmi dátum, egy kormányzati bejelentés – a nyilvános tz levelezőlistán vitatják meg, ahol a közreműködők hivatalos közlönyöket, híreket és kormányrendeleteket idéznek bizonyítékként. A pontosságot komolyan veszik; a történelmi adatok változtatásait különösen alaposan ellenőrzik elsődleges források alapján.
A kiadások verziószámozása év és betű szerint történik: 2024a, 2024b, 2024c és így tovább. A szám az év; a betű minden egyes kiadással nő az adott évben. Mivel a kormányok saját kiszámíthatatlan ütemezésük szerint jelentik be az óraállításokat, nincs rögzített kiadási ritmus – egy csendes évben lehet két kiadás, míg egy politikai változásokkal teli évben sok. A rendszerektől elvárják a gyors frissítést, mert egy elavult adatbázis rossz idő megjelenítését jelentheti egy szabályváltozás hatályba lépése után.
Ki függ tőle
Szinte minden.
- Operációs rendszerek. A Linux disztribúciók a
tzdata-t alapcsomagként szállítják. A macOS ugyanebből a forrásból származtatja a zónaadatait. A Windows örökség okokból saját regisztrációs adatbázis-alapú zónáit használja, de az ICU könyvtáron és modern API-okon keresztül elérhetővé teszi az IANA zónákat. - Programozási nyelvek. Gyakorlatilag minden kiforrott dátum/idő könyvtár olvas a tz adatbázisból vagy tartalmazza azt: Python
zoneinfo, Javajava.time, az ICU projekt, PostgreSQL, JavaScript motorok az ICU-n keresztül, Ruby, PHP és még sok más. - Alkalmazások. Naptárak, foglalási rendszerek, pénzügyi kereskedési platformok, naplóelemző eszközök és ütemező szolgáltatások mind támaszkodnak rá, általában anélkül, hogy a fejlesztők gondolnának rá.
Ez az általánosság pontosan az, ami miatt az adatbázis annyira fontos. Egyetlen, megosztott, gondosan karbantartott igazságforrás azt jelenti, hogy egy rendszerben ütemezett megbeszélés helyesen jelenik meg egy másikban, operációs rendszereken és nyelveken át, évtizedekkel a múltba vagy a jövőbe.
Ha szeretnéd felfedezni magukat a zónákat, böngészd a IANA időzónák teljes listáját, vagy nézd meg, hogyan térképeződnek fel a világban a összes időzóna könyvtárunkban.
Gyakran Ismételt Kérdések
A tz adatbázis ugyanaz, mint a tzdata, zoneinfo és az Olson adatbázis?
Igen. Ezek mind ugyanannak a projektnek a nevei. A "tzdata" általában az operációs rendszerhez csomagolt adatfájlokra utal, a "zoneinfo" a lefordított bináris könyvtárra, az "Olson adatbázis" pedig a régebbi történelmi név Arthur David Olson alapító után. Ma a hivatalos név az IANA Időzóna Adatbázis.
Milyen gyakran frissül az adatbázis?
Nincs rögzített ütemezés. A kiadásokat valós események váltják ki – egy kormány megváltoztatja a nyári időszámítási szabályait vagy a szabványos eltolást, vagy egy javítás a történelmi adatokban. Egyes években egyetlen kiadás van; másokban több. Mindegyik 2024a, 2024b formában van elnevezve, a betű növekszik az év során.
Miért nevezi el a zónákat olyan városok után, mint America/New_York?
A városok földrajzilag rögzítettek és folyamatos időszámítási történettel rendelkeznek, míg az országok, határok és eltolások idővel változnak. Egy reprezentatív város használata minden zónának egy stabil, politikailag semleges azonosítót ad, amely érvényes marad még akkor is, ha az alapul szolgáló nyári időszámítási vagy eltolási szabályok változnak.
Tárolhatok csak egy UTC-eltolást a zónanév helyett?
Csak egyetlen rögzített pillanatra. Jövőbeli vagy ismétlődő események esetén tárold a zónaazonosítót, mert az eltolások változnak a nyári időszámítás és a kormányzati döntések miatt. A zónanév az adatbázissal együtt lehetővé teszi a szoftver számára, hogy automatikusan kiszámítsa a helyes eltolást bármely dátumra.
Ki vezeti most a projektet?
Az IANA publikálja, amely 2011-ben vette át a gondnokságot, és Paul Eggert koordinálja a közreműködők közösségével a nyilvános tz levelezőlistán keresztül. A technikai munka továbbra is együttműködő, önkéntesek által vezérelt erőfeszítés marad.