Почему zone.tab пропускает так много часовых поясов?


12

В вашем типичном * nix-окне есть более тысячи файлов часовых поясов (в / user / share / zoneinfo). Многие из них различаются только историческими датами, которые не имеют большого значения для программ, которые заботятся только о последних датах или даже только о текущем времени. Но, несмотря на это, их существует масса, и совершенно законно выбрать любой из них в качестве часового пояса для вашей системы, а также использовать любой из них для конкретной программы или оболочки, установив переменную среды TZ. Они все действительны.

И еще есть файл zone.tab (/usr/share/zoneinfo/zone.tab). В нем перечислены только чуть более 400 часовых поясов (414 в моей системе). Здесь не хватает многих часовых поясов. Итак, вопрос почему? Почему они не все там? И так как они не все там, как это решается, какие из них помещены туда?

zone.tab содержит код страны, а также долготу и широту для каждого часового пояса, который он перечисляет (что, по-видимому, и является причиной существования файла), и не во всех часовых поясах есть такие (например, в UTC таких нет). и он не находится в zone.tab), поэтому ясно, что не каждый часовой пояс может быть указан в zone.tab. Но почему в файле не указаны все те, которые соответствуют фактическому городу или региону (как большинство из них)? Почему только 414 вместо 1000+, которые на самом деле доступны?

Ответы:


6

Тема под названием «Возобновленная просьба о включении zone.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.