Czym właściwie jest Strefa Czasowa IANA
Jeśli kiedykolwiek pracowałeś z datami i czasem w oprogramowaniu, polegałeś na Bazie Stref Czasowych IANA, nawet jeśli o tym nie wiedziałeś. Występuje pod kilkoma nazwami — baza tz, tzdata, baza Olsona lub zoneinfo — ale wszystkie odnoszą się do tego samego: wspólnego, ogólnodostępnego katalogu stref czasowych świata i rządzących nimi zasad.
Słowo "katalog" nie oddaje tego w pełni. Baza danych nie tylko wymienia, które regiony znajdują się na jakim przesunięciu UTC. Rejestruje pełną historię cywilnego pomiaru czasu dla każdego regionu — każdą zmianę przesunięcia, każdą zmianę czasu letniego, każdą wojenną korektę zegara i każdą zaplanowaną przyszłą regułę — sięgając w wielu przypadkach do połowy XIX wieku, kiedy lokalny czas średni ustąpił miejsca ustandaryzowanym strefom. Gdy Twoja aplikacja kalendarza poprawnie pokazuje, że spotkanie w 1985 roku odbyło się godzinę wcześniej niż to samo spotkanie dzisiaj, to właśnie działa baza tz.
Jest tekstowa, czytelna dla człowieka i mała. Skompilowana wersja binarna, która znajduje się na Twoim komputerze, ma zaledwie kilka megabajtów. A jednak koduje jeden z najcichszych, najbardziej skomplikowanych zbiorów danych w informatyce.
Krótka historia
Projekt rozpoczął się w latach 80. XX wieku pod kierownictwem Arthura Davida Olsona, który złożył pierwszą wersję i hostował ją na serwerach amerykańskiego Narodowego Instytutu Zdrowia. Przez dziesięciolecia był utrzymywany głównie dzięki wolontariackim wysiłkom koordynowanym za pośrednictwem publicznej listy mailingowej, dlatego starsza nazwa "baza Olsona" wciąż pojawia się w dokumentacji.
Paul Eggert przejął rolę głównego redaktora i pozostaje długoletnim koordynatorem projektu. Jego opracowanie towarzyszącego dokumentu theory.html oraz skrupulatna historia commitów sprawiły, że baza danych stała się zarówno źródłem historycznym, jak i technicznym.
W 2011 roku, po krótkim, ale niepokojącym sporze prawnym dotyczącym danych historycznych, opiekę nad projektem przejęła Internet Assigned Numbers Authority (IANA), ta sama organizacja, która koordynuje inne podstawowe zasoby internetowe. IANA publikuje teraz oficjalne wydania, dlatego "baza stref czasowych IANA" stała się kanoniczną nazwą. Praca wciąż jest wykonywana przez tę samą społeczność współtwórców; IANA zapewnia instytucjonalny dom i stabilny punkt dystrybucji.
Konwencja nazewnictwa: Obszar/Lokalizacja
Jedną z najbardziej charakterystycznych cech bazy danych jest sposób nazywania stref. Zamiast nazw krajów lub surowych przesunięć, używa formatu Obszar/Lokalizacja, prawie zawsze opartego na reprezentatywnym mieście:
America/New_YorkEurope/LondonAsia/KolkataAustralia/Sydney
"Obszar" to zazwyczaj kontynent lub ocean (America, Europe, Asia, Pacific), a "Lokalizacja" to dobrze znane miasto w danej strefie. Ten wybór wydaje się dziwaczny, dopóki nie zrozumiesz stojącego za nim rozumowania.
Miasta są stabilne; granice polityczne i przesunięcia nie są. Kraje dzielą się, łączą, zmieniają nazwy i przestawiają zegary. Miasto natomiast jest stałym punktem geograficznym z ciągłą historią pomiaru czasu. Nazwanie strefy America/New_York zamiast "Czas wschodni USA" lub "UTC-5" oznacza, że identyfikator pozostaje ważny, nawet gdy zasady z nim związane ewoluują.
Baza danych celowo unika nazw krajów, aby uniknąć sporów politycznych i dlatego, że jeden kraj często zawiera kilka stref — Stany Zjednoczone mają ich kilkanaście. Wybiera najbardziej zaludnione lub historycznie znaczące miasto w każdej odrębnej strefie jako neutralną etykietę. Gdy dwa regiony mają identyczną historię zegarów od 1970 roku, dzielą jedną strefę; w momencie, gdy ich historie się rozchodzą, otrzymują osobne wpisy.
Dlaczego surowe przesunięcia nie wystarczają
Częstym instynktem początkujących jest przechowywanie czasu jako "UTC+5:30" i uznanie sprawy za załatwioną. Działa to dla pojedynczej chwili, ale załamuje się, gdy trzeba rozumować o przyszłych lub cyklicznych zdarzeniach, ponieważ przesunięcia nie są statycznymi właściwościami miejsca. Są wynikiem zasad, które rządy zmieniają często i nagle.
Rozważ kilka rzeczywistych przykładów, które baza danych musiała wchłonąć:
- Samoa całkowicie pominęło 30 grudnia 2011 roku. Aby dostosować swój dzień roboczy do Australii i Nowej Zelandii, a nie Stanów Zjednoczonych, Samoa przeskoczyło Międzynarodową Linię Zmiany Daty, przechodząc z UTC-11 na UTC+13. Dla mieszkańców wysp ten piątek po prostu nie istniał.
- Kraje znoszą, przyjmują lub zmieniają harmonogram czasu letniego z krótkim wyprzedzeniem. Unia Europejska debatowała nad zniesieniem czasu letniego; kilka krajów i stanów USA zmieniło swoje zasady dotyczące czasu letniego w ostatnich dziesięcioleciach. Turcja, Rosja i inne kraje całkowicie zmieniły swoje standardowe przesunięcia.
- Daty rozpoczęcia i zakończenia czasu letniego się przesuwają. Stany Zjednoczone przesunęły granice czasu letniego w 2007 roku. Każdy system, który na stałe zakodował starą zasadę, po cichu generował błędne czasy przez tygodnie każdego roku.
Jeśli przechowujesz tylko przesunięcie, nie możesz odpowiedzieć na pytanie "jaki będzie czas lokalny w Santiago 15 listopada przyszłego roku?" — ponieważ odpowiedź zależy od zasad, które mogą nie być jeszcze nawet sfinalizowane. Przechowywanie identyfikatora strefy (America/Santiago) plus baza danych pozwala oprogramowaniu obliczyć prawidłowe przesunięcie dla dowolnego momentu, przeszłego lub przyszłego, i automatycznie przeliczyć je, gdy zasady się zmienią.
To jest podstawowa wartość: baza tz oddziela tożsamość miejsca od ciągle zmieniających się zasad, które określają jego zegar.
Jak jest utrzymywana
Utrzymanie odbywa się jawnie. Proponowane zmiany — nowa zasada czasu letniego, poprawiona data historyczna, ogłoszenie rządowe — są omawiane na publicznej liście mailingowej tz, gdzie współtwórcy cytują oficjalne dzienniki, raporty prasowe i dekrety rządowe jako dowody. Dokładność jest traktowana poważnie; zmiany danych historycznych są szczególnie skrupulatnie weryfikowane w oparciu o źródła pierwotne.
Wydania są wersjonowane za pomocą roku i litery: 2024a, 2024b, 2024c i tak dalej. Liczba to rok; litera zwiększa się z każdym wydaniem w tym roku. Ponieważ rządy ogłaszają zmiany czasu w swoim własnym, nieprzewidywalnym harmonogramie, nie ma stałego harmonogramu wydań — spokojny rok może przynieść dwa wydania, podczas gdy rok politycznych zawirowań przynosi wiele. Systemy powinny być aktualizowane niezwłocznie, ponieważ nieaktualna baza danych może oznaczać wyświetlanie błędnego czasu po wejściu w życie zmiany zasad.
Kto na tym polega
Prawie wszystko.
- Systemy operacyjne. Dystrybucje Linuksa dostarczają
tzdatajako podstawowy pakiet. macOS czerpie dane stref z tego samego źródła. Windows używa własnych stref opartych na rejestrze ze względów historycznych, ale udostępnia strefy IANA za pośrednictwem biblioteki ICU i nowoczesnych API. - Języki programowania. Praktycznie każda dojrzała biblioteka daty/czasu odczytuje lub dołącza bazę tz:
zoneinfow Pythonie,java.timew Javie, projekt ICU, PostgreSQL, silniki JavaScript przez ICU, Ruby, PHP i wiele innych. - Aplikacje. Kalendarze, systemy rezerwacji, platformy handlu finansowego, narzędzia do analizy logów i usługi planowania polegają na niej, zwykle bez zastanawiania się nad tym przez programistów.
Ta wszechobecność jest właśnie powodem, dla którego baza danych jest tak ważna. Pojedyncze, wspólne, starannie utrzymywane źródło prawdy oznacza, że spotkanie zaplanowane w jednym systemie wyświetla się poprawnie w innym, na różnych systemach operacyjnych i językach, dziesięciolecia w przeszłość lub przyszłość.
Jeśli chcesz poznać same strefy, przejrzyj pełną listę strefy czasowe IANA lub zobacz, jak są rozmieszczone na całym świecie w naszym katalogu wszystkie strefy czasowe.
Często zadawane pytania
Czy baza tz to to samo co tzdata, zoneinfo i baza Olsona?
Tak. To wszystko nazwy tego samego projektu. "tzdata" zwykle odnosi się do plików danych spakowanych dla systemu operacyjnego, "zoneinfo" do skompilowanego katalogu binarnego, a "baza Olsona" to starsza historyczna nazwa od założyciela Arthura Davida Olsona. Obecnie oficjalna nazwa to Baza Stref Czasowych IANA.
Jak często aktualizowana jest baza danych?
Nie ma stałego harmonogramu. Wydania są wywoływane przez wydarzenia ze świata rzeczywistego — zmianę zasad czasu letniego lub standardowego przesunięcia przez rząd, lub korektę danych historycznych. Niektóre lata przynoszą jedno wydanie; inne kilka. Każde jest nazwane jak 2024a, 2024b, z literą zwiększającą się w ciągu roku.
Dlaczego nazywa strefy od miast takich jak America/New_York?
Miasta są geograficznie stałe i mają ciągłą historię pomiaru czasu, podczas gdy kraje, granice i przesunięcia zmieniają się w czasie. Użycie reprezentatywnego miasta daje każdej strefie stabilny, politycznie neutralny identyfikator, który pozostaje ważny, nawet gdy zmieniają się podstawowe zasady czasu letniego lub przesunięcia.
Czy mogę po prostu przechowywać przesunięcie UTC zamiast nazwy strefy?
Tylko dla pojedynczej ustalonej chwili. W przypadku przyszłych lub cyklicznych zdarzeń należy przechowywać identyfikator strefy, ponieważ przesunięcia zmieniają się wraz z czasem letnim i decyzjami rządowymi. Nazwa strefy plus baza danych pozwala oprogramowaniu automatycznie obliczyć prawidłowe przesunięcie dla dowolnej daty.
Kto teraz prowadzi projekt?
Jest publikowany przez IANA, która przejęła opiekę w 2011 roku, i koordynowany przez Paula Eggerta ze społecznością współtwórców pracujących za pośrednictwem publicznej listy mailingowej tz. Prace techniczne pozostają wspólnym, wolontariackim wysiłkiem.