Чому в zone.tab не вистачає стільки часових поясів?


12

У вашому типовому * nix вікні є понад тисячу файлів часового поясу (в / користувачі / share / zoneinfo). Багато з них відрізняються лише історичними датами, які мають мало значення для програм, які цікавляться лише останніми датами, або навіть лише про поточний час. Але незалежно від того, їх існує багато , і цілком законно вибрати будь-який з них як часовий пояс для вашої системи, а також використовувати будь-який з них для певної програми або оболонки, встановивши змінну середовища TZ. Вони всі дійсні.

А потім є файл zone.tab (/usr/share/zoneinfo/zone.tab). У ньому перераховано лише трохи більше 400 часових поясів (414 у моїй системі). Тут бракує багато часових поясів. Отже, питання чому? Чому вони не всі там? А оскільки у них не все, як вирішується, кого туди помістити?

zone.tab містить код країни, а також довготу та широту для кожного часового поясу, який він перераховує (що, мабуть, є причиною існування файлу), і не всі часові пояси є такими (наприклад, у UTC немає таких , і це не в зоні.tab), тому очевидно, що не кожен часовий пояс можна вказати в зоні.tab. Але чому у файлі не вказані всі ті, які відповідають фактичному місту чи регіону (як це робить більшість з них)? Чому лише 414 замість 1000+, які є фактично доступними?

Відповіді:


6

Нитка під назвою Оновлена ​​прохання про включення зони.tab пропонує деяке пояснення, для чого zone.tabвикористовується.

Її головне використання полягає в тому, щоб показати карту міст та їх місць, щоб користувач міг вибрати свій часовий пояс, натиснувши на місто поблизу.

Зважаючи на це, не потрібно знати всіх псевдонімів для кожного міста, знаючи, що один бажаний спосіб його посилання є достатнім. (Але, схоже, воно завжди включає принаймні одне місто в кожній країні.)

Інші псевдоніми для кожної зони зберігаються у вихідному коді tzdata .

Наприклад, backwardфайл має

Link    Asia/Kolkata        Asia/Calcutta

щоб люди могли використовувати новий правопис або старий правопис.

Усі інші файли в файлі /usr/share/zoneinfoгенеруються з цього вихідного коду за допомогою zic.

Але псевдонімів не більше 600, тож чому велика різниця?

Там, як правило , три версії кожної тимчасової зони генерується: posix, rightі по замовчуванням вашої системи.

$ 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

У tzcode Makefile показано , як ті , які генеруються, і згадує причину них: posixігнорує коректувальні секунди, rightвключає їх.

Дивіться також:


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.