Dlaczego w zone.tab brakuje tylu stref czasowych?


12

W typowym pudełku * nix znajduje się ponad tysiąc plików stref czasowych (w katalogu / user / share / zoneinfo). Wiele z nich różni się tylko datami historycznymi, które mają niewielkie znaczenie dla programów, które dbają tylko o ostatnie daty - a nawet tylko o bieżącą godzinę. Ale niezależnie od tego, jest ich mnóstwo i całkowicie legalne jest wybranie dowolnego z nich jako strefy czasowej dla twojego systemu, a także użycie dowolnego z nich do określonego programu lub powłoki przez ustawienie zmiennej środowiskowej TZ. Wszystkie są ważne.

Jest też plik zone.tab (/usr/share/zoneinfo/zone.tab). Wymienia tylko nieco ponad 400 stref czasowych (414 w moim systemie). Brakuje wielu stref czasowych. Pytanie brzmi dlaczego? Dlaczego ich tam nie ma? A ponieważ nie ma ich tam wszystkich, jak zdecydowano, które zostaną tam umieszczone?

zone.tab zawiera kod kraju, a także długość i szerokość geograficzną dla każdej wymienionej strefy czasowej (co prawdopodobnie jest przyczyną istnienia pliku), i nie wszystkie strefy czasowe naprawdę je mają (np. UTC ich nie ma i nie ma go w zone.tab), więc wyraźnie nie każda strefa czasowa może być wymieniona w zone.tab. Ale dlaczego nie wszystkie z tych, które odpowiadają rzeczywistemu miastu lub regionowi (jak większość z nich) są wymienione w pliku? Dlaczego tylko 414 zamiast 1000+, które są faktycznie dostępne?

Odpowiedzi:


6

Wątek zatytułowany Odnowiona prośba o włączenie strefy.tab zawiera wyjaśnienie tego, do czego zone.tabsłuży.

Wydaje się, że jego głównym zastosowaniem jest wyświetlanie mapy miast i ich lokalizacji, aby użytkownik mógł wybrać strefę czasową, klikając miasto w pobliżu.

Mając to na uwadze, nie musi znać wszystkich aliasów dla każdego miasta, wiedząc, że jeden preferowany sposób odwoływania się do niego jest wystarczający. (Wygląda jednak na to, że zawsze obejmuje co najmniej jedno miasto w każdym kraju).

Pozostałe aliasy dla każdej strefy są przechowywane w kodzie źródłowym tzdata .

Na przykład backwardplik ma

Link    Asia/Kolkata        Asia/Calcutta

aby ludzie mogli używać nowej lub starej pisowni.

Wszystkie pozostałe pliki /usr/share/zoneinfosą generowane z tego kodu źródłowego przy użyciu zic.

Ale nie ma ponad 600 aliasów, więc dlaczego tak duża różnica?

Jest zwykle trzy wersje każdej strefy czasowej generowanej: posix, rightoraz domyślne systemu.

$ cd /usr/share/zoneinfo
$ find right -type f | wc -l
581
$ find posix -type f | wc -l
581
$ find . \( -name posix -o -name right \) -prune -o -type f | wc -l
586

Kod tzcode Makefile pokazuje, w jaki sposób są one generowane, i podaje przyczynę: posixignoruje sekundy przestępne, rightuwzględnia je.

Zobacz też:


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.