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?

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:


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.