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

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

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

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

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

решение1

Тема под названиемПовторный призыв к включению 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

Thetzcode Makefileпоказывает, как они генерируются, и упоминает причину их появления: posixигнорирует дополнительные секунды, rightвключает их.

Смотрите также:

решение2

По следующей ссылкеhttp://en.wikipedia.org/wiki/Tz_database

База данных часовых поясов в настоящее время поддерживается Управлением по распределению адресов в Интернете.

Связанный контент