Hay más de mil archivos de zona horaria en su típico cuadro *nix (en /user/share/zoneinfo). Muchos de ellos varían sólo en fechas históricas que tienen poca relevancia para programas que sólo se preocupan por fechas recientes, o incluso sólo por la hora actual. Pero independientemente, haysonHay un montón de ellos, y es perfectamente legal seleccionar cualquiera de ellos como zona horaria para su sistema, así como utilizar cualquiera de ellos para un programa o shell específico configurando la variable de entorno TZ. Todos son válidos.
Y luego está el archivo Zone.tab (/usr/share/zoneinfo/zone.tab). Enumera sólo un poco más de 400 zonas horarias (414 en mi sistema). le falta unlotede zonas horarias. Entonces, la pregunta es ¿por qué? ¿Por qué no están todos ahí? Y como no están todos ahí, ¿cómo se decide cuáles se ponen ahí?
zone.tab incluye un código de país, así como longitud y latitud para cada zona horaria que enumera (que presumiblemente es la razón de la existencia del archivo), y notodolas zonas horarias realmente los tienen (por ejemplo, UTC no los tiene y no está en zona.tab), así que claramente, nocadaLa zona horaria se puede enumerar en Zone.tab. Pero, ¿por qué no aparecen en el archivo todos los que corresponden a una ciudad o región real (como lo hacen la mayoría)? ¿Por qué sólo 414 en lugar de los más de 1000 que realmente están disponibles?
Respuesta1
Un hilo tituladoUna nueva petición para la inclusión de Zone.tabOfrece alguna explicación de zone.tab
para qué se utiliza.
Su uso principal parece ser mostrar un mapa de ciudades y sus ubicaciones, para permitir al usuario elegir su zona horaria haciendo clic en una ciudad cercana.
Teniendo esto en cuenta, no es necesario conocer todos los alias de cada ciudad; basta con 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 eltzdatoscódigo fuente.
Por ejemplo, el backward
archivo tiene
Link Asia/Kolkata Asia/Calcutta
para que la gente pueda utilizar la ortografía nueva o la antigua.
Todos los demás archivos /usr/share/zoneinfo
se generan a partir de este código fuente usando zic
.
Pero no hay más de 600 alias, entonces, ¿a qué se debe la gran diferencia?
Generalmente se generan tres versiones de cada zona horaria: posix
, right
y la predeterminada de su 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
Elcódigo tz Makefile
muestra cómo se generan y menciona el motivo: posix
ignora los segundos intercalares, right
los incluye.
Ver también:
Respuesta2
Por el siguiente enlacehttp://en.wikipedia.org/wiki/Tz_database
La base de datos de zonas horarias ahora la mantiene la Autoridad de Números Asignados de Internet.