Por que zone.tab está faltando tantos fusos horários?

12

Existem mais de mil arquivos de fuso horário na sua caixa * nix típica (em / user / share / zoneinfo). Muitos deles variam apenas em datas históricas que têm pouca relevância para programas que se preocupam apenas com datas recentes - ou mesmo apenas com a hora atual. Mas, independentemente, não são uma tonelada deles, e é perfeitamente legal para selecionar qualquer um deles como o fuso horário para o seu sistema, bem como para usar qualquer um deles para um programa ou shell específico, definindo a variável de ambiente TZ. Eles são todos válidos.

E há o arquivo zone.tab (/usr/share/zoneinfo/zone.tab). Ele lista apenas um pouco mais de 400 fusos horários (414 no meu sistema). Faltam muitos fusos horários. Então, a pergunta é por quê? Por que eles não estão todos lá? E como eles não estão todos lá, como é decidido quais são colocados lá?

zone.tab inclui um código de país e longitude e latitude para cada fuso horário listado (o que presumivelmente é o motivo da existência do arquivo), e nem todos os fusos horários realmente os possuem (por exemplo, o UTC não possui esses , e não está em zone.tab); portanto, é claro que nem todo fuso horário pode ser listado em zone.tab. Mas por que todos os que correspondem a uma cidade ou região real (como a maioria deles) estão listados no arquivo? Por que apenas 414 em vez dos mais de 1000 que estão realmente disponíveis?

Jonathan M Davis
fonte

Respostas:

6

Um tópico intitulado Um pedido renovado de inclusão de zone.tab oferece algumas explicações sobre o que zone.tabé usado.

Seu uso principal parece ser mostrar um mapa das cidades e suas localizações, para permitir que um usuário escolha seu fuso horário clicando em uma cidade próxima a elas.

Com isso em mente, não é necessário conhecer todos os aliases de cada cidade, sabendo que uma maneira preferida de se referir a ela é suficiente. (Mas parece que sempre inclui pelo menos uma cidade em cada país.)

Os outros aliases para cada zona são armazenados no código-fonte tzdata .

Por exemplo, o backwardarquivo possui

Link    Asia/Kolkata        Asia/Calcutta

para que as pessoas possam usar a nova ortografia ou a ortografia antiga.

Todos os outros arquivos /usr/share/zoneinfosão gerados a partir deste código-fonte usando zic.

Mas não há mais de 600 aliases, então por que a grande diferença?

Há geralmente três versões de cada fuso horário gerado: posix, righte padrão do seu sistema.

$ 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

O tzcode Makefile mostra como eles são gerados e menciona o motivo deles: posixignora os segundos bissextos, rightinclui-os.

Veja também:

Mikel
fonte
-1

Pelo link a seguir http://en.wikipedia.org/wiki/Tz_database

O banco de dados de fuso horário agora é mantido pela Internet Assigned Numbers Authority.

JeffM
fonte
3
Sim. Mas isso não responde à pergunta.
Jonathan M Davis