¿Por qué a zone.tab le faltan tantas zonas horarias?


12

Hay más de mil archivos de zona horaria en su cuadro típico * nix (en / user / share / zoneinfo). Muchos de ellos varían solo en fechas históricas que tienen poca relevancia para programas que se preocupan solo por fechas recientes, o incluso solo por la hora actual. Pero sin tener en cuenta, no son un montón de ellos, y es perfectamente legal para seleccionar cualquiera de ellos como la zona horaria de su sistema, así como a utilizar cualquiera de ellos para un programa o shell específica estableciendo la variable de entorno TZ. Todos son validos.

Y luego está el archivo zone.tab (/usr/share/zoneinfo/zone.tab). Enumera solo un poco más de 400 zonas horarias (414 en mi sistema). Le faltan muchas zonas horarias. Entonces, la pregunta es ¿por qué? ¿Por qué no están todos allí? Y dado que no están todos allí, ¿cómo se decide cuáles se ponen allí?

zone.tab incluye un código de país y también la longitud y latitud para cada zona horaria que enumera (que presumiblemente es la razón de la existencia del archivo), y no todas las zonas horarias realmente tienen esos (por ejemplo, UTC no tiene esos , y no está en zone.tab), por lo que claramente, no todas las zonas horarias se pueden enumerar en zone.tab. Pero, ¿por qué no se enumeran todas las que corresponden a una ciudad o región real (como la mayoría de ellas) en el archivo? ¿Por qué solo 414 en lugar de los más de 1000 que están realmente disponibles?

Respuestas:


6

Un hilo titulado Un motivo renovado para la inclusión de zone.tab ofrece alguna explicación de para qué zone.tabse utiliza.

Parece que su uso principal es mostrar un mapa de ciudades y sus ubicaciones, para permitir que un usuario elija su zona horaria haciendo clic en una ciudad cercana.

Con eso en mente, no es necesario conocer todos los alias de cada ciudad, es suficiente conocer una forma preferida de referirse a ella. (Pero parece que siempre incluye al menos una ciudad en cada país).

Los otros alias para cada zona se almacenan en el código fuente tzdata .

Por ejemplo, el backwardarchivo tiene

Link    Asia/Kolkata        Asia/Calcutta

para que la gente pueda usar la nueva ortografía o la vieja ortografía.

Todos los demás archivos /usr/share/zoneinfose generan a partir de este código fuente utilizando zic.

Pero no hay más de 600 alias, entonces, ¿por qué la gran diferencia?

Por lo general hay tres versiones de cada zona horaria generada: posix, righty por omisión del 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

El tzcode Makefile muestra cómo se generan y menciona el motivo: posixignora los segundos bisiestos, los rightincluye.

Ver también:


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.