Perché zone.tab manca così tanti fusi orari?


12

Ci sono oltre un migliaio di file di fuso orario nella tipica casella * nix (in / user / share / zoneinfo). Molti di essi variano solo in date storiche che hanno poca rilevanza per i programmi che si occupano solo di date recenti - o anche solo dell'ora corrente. Ma a prescindere, ce ne sono un sacco, ed è perfettamente legale selezionarne uno come fuso orario per il proprio sistema, nonché usarne uno per un programma o una shell specifici impostando la variabile d'ambiente TZ. Sono tutti validi.

E poi c'è il file zone.tab (/usr/share/zoneinfo/zone.tab). Elenca solo poco più di 400 fusi orari (414 sul mio sistema). Manca un sacco di fusi orari. Quindi, la domanda è: perché? Perché non sono tutti lì? E dal momento che non sono tutti lì, come si decide quali vengono messi lì?

zone.tab include un codice paese e anche la longitudine e la latitudine per ogni fuso orario che elenca (che presumibilmente è il motivo dell'esistenza del file), e non tutti i fusi orari ne hanno davvero (ad esempio UTC non ha quelli e non è in zone.tab), quindi chiaramente non tutti i fusi orari possono essere elencati in zone.tab. Ma perché non tutti quelli che corrispondono a una città o regione (come la maggior parte di loro) sono elencati nel file? Perché solo 414 invece dei 1000+ che sono effettivamente disponibili?

Risposte:


6

Un thread intitolato Un rinnovato motivo di inclusione di zone.tab offre una spiegazione di ciò che zone.tabviene utilizzato.

Il suo uso principale sembra essere quello di mostrare una mappa delle città e delle loro posizioni, per consentire a un utente di scegliere il proprio fuso orario facendo clic su una città vicino a loro.

Con questo in mente, non ha bisogno di conoscere tutti gli alias per ogni città, conoscere un modo preferito di fare riferimento ad esso è sufficiente. (Ma sembra che includa sempre almeno una città in ogni paese.)

Gli altri alias per ciascuna zona sono memorizzati nel codice sorgente tzdata .

Ad esempio, il backwardfile ha

Link    Asia/Kolkata        Asia/Calcutta

in modo che le persone possano usare la nuova ortografia o la vecchia ortografia.

Tutti gli altri file in /usr/share/zoneinfovengono generati da questo codice sorgente usando zic.

Ma non ci sono oltre 600 alias, quindi perché la grande differenza?

C'è di solito tre versioni di ogni fuso orario generato: posix, right, e di default 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

Il codice tz Makefile mostra come vengono generati e ne menziona il motivo: posixignora i secondi bisestili, rightli include.

Guarda anche:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.