2. Qu'est-ce qu'un fuseau horaire ?

Les fuseaux horaires sont des divisions géographiques du globe terrestre tous les 15° de longitude, commençant à Greenwich en Angleterre, créées pour aider les gens à déterminer l'heure qu'il est partout dans le monde.

De nos jours, il s'agit plus de divisions politiques que géographiques, parce que parfois les gens ont besoin d'avoir la même heure que d'autres en des lieux pas trop éloignés. Et pour faire des économies d'énergies, nous avons aujourd'hui l'heure d'été qui correspond à un changement de fuseau horaire.

Les fuseaux horaires sont généralement définis par les gouvernements ou par un institut d'astronomie et sont représentés par un code de 3 ou 4 lettres. Voir Section 2.2, « Exemples de fuseaux horaires » pour des exemples.

Si vous voulez connaître l'heure actuelle n'importe où dans le monde, vous pouvez utiliser les sites web timezoneconverter.com (en anglais) ou horlogeparlante.com (en français)

2.1. L'heure d'été

Pour faire des économies d'énergie, les gouvernements ont créé l'heure d'été (appelée en anglais Daylight Savings Time ou DST). Nos horloges sont avancées d'une heure et cela fait sembler nos journées plus longues. En fait, cela revient seulement à changer de fuseau horaire. Le temps primitif (UTC) est encore, et restera toujours, le même.

Nous verrons plus tard comment activer ou désactiver automatiquement l'heure d'été dans Linux.

2.2. Exemples de fuseaux horaires

Il n'y a rien de plus parlant que des exemples :

Tableau 1. Fuseaux horaires du Brésil. Décalage par rapport à l'heure UTC

Nom et décalageNom et décalage heure d'étéLieux
BREST -2:00BREDT -1:00Fernando de Noronha
BRST -3:00BRDT -2:00Sao Paulo, Rio, Brasilia, Minas Gerais, Région Nord-Est, Région Sud, et cætera
BRWST -4:00BRWDT -3:00Région Ouest
BRAST -5:00BRADT -4:00Acre

Si vous avez une table telle que celle-ci pour les USA ou l'Europe, envoyez-la moi s'il-vous-plaît.

2.3. Les fuseaux horaires et Linux

Les systèmes Linux utilisent les fuseaux horaires dynamiques GLIBC basés sur /etc/localtime. Ce fichier est un lien vers (ou une copie) d'un fichier d'information de fuseau horaire situé généralement dans le répertoire /usr/share/zoneinfo.

D'un point de vue géophysique, il y a seulement 360°/15°=24 fuseaux horaires dans le monde. Mais pour rendre les choses faciles pour tous et pour tenir compte de toutes les variations politiques (comme l'heure d'été), vous trouverez des centaines de fichiers d'information de fuseau horaire dans /usr/share/zoneinfo, chacun valable pour une ville, un pays, et cætera.

Certains pays, comme le Brésil, n'ont pas un jour fixe pour passer à l'heure d'été. Il est défini chaque année quelques mois avant l'été et peut vous obliger à changer votre fichier d'information de fuseau horaire qui peut être compilé avec la commande zic à partir d'un fichier comme celui-ci.

Exemple 1. Fichier d'information de fuseau horaire pour le Brésil

# Fuseaux horaires du Brésil
#
# Les fuseaux horaires brésiliens sont :
# BREST: Est de Brasilia. Fernando de Noronha.
# BRST:  Brasilia, Sao Paulo, Rio, Nord-est, Sud, etc
# BRWST: Ouest de Brasilia. Mato Grosso, Manaus
# BRAST: Acre.
#
# En heure d'été, la lettre 'S' devient 'D'.
#
# Pour installer, exécuter :
#
# # zic Brazil.txt
#
# Les fichiers de fuseaux horaires seront installés dans
# /usr/share/zoneinfo (dépend de votre distribution). Ensuite,
# créez un lien symbolique de votre zone vers /etc/localtime :
#
# # ln -sf /usr/share/zoneinfo/Brazil/Brasilia /etc/localtime
#
#
# Si vous avez des mises à jour ou de nouveaux standards pour ce
# fichier, envoyez-les en anglais à
#
# Avi Alkalay <avi @ unix.sh>
#
# Dernière mise à jour : 18 Nov 2000
# Ce fichier est disponible sur http://avi.alkalay.net/linux/zoneinfo/
#

# Rule  NAME    FROM  TO    TYPE  IN    ON   AT    SAVE   LETTER/S
Rule    Brazil  1931  1932  -     Oct   3    0:00  1:00   D
Rule    Brazil  1932  1933  -     Mar   31   0:00  0      S
Rule    Brazil  1949  only  -     Dec   1    0:00  1:00   D
Rule    Brazil  1950  only  -     Apr   30   0:00  0      S
Rule    Brazil  1950  1952  -     Dec   1    0:00  1:00   D
Rule    Brazil  1951  only  -     Apr   16   0:00  0      S
Rule    Brazil  1952  only  -     Mar   31   0:00  0      S
Rule    Brazil  1953  only  -     Feb   28   0:00  0      S
Rule    Brazil  1963  only  -     Oct   23   0:00  1:00   D
Rule    Brazil  1964  only  -     Mar   1    0:00  0      S
Rule    Brazil  1965  only  -     Jan   31   0:00  1:00   D
Rule    Brazil  1965  only  -     Mar   31   0:00  0      S
Rule    Brazil  1965  only  -     Dec   1    0:00  1:00   D
Rule    Brazil  1966  1968  -     Mar   1    0:00  0      S
Rule    Brazil  1966  1967  -     Nov   1    0:00  1:00   D
Rule    Brazil  1984  only  -     Nov   2    0:00  1:00   D
Rule    Brazil  1985  only  -     Mar   15   0:00  0      S
Rule    Brazil  1985  only  -     Nov   2    0:00  1:00   D
Rule    Brazil  1986  only  -     Mar   15   0:00  0      S
Rule    Brazil  1986  only  -     Oct   25   0:00  1:00   D
Rule    Brazil  1987  only  -     Feb   14   0:00  0      S
Rule    Brazil  1987  only  -     Oct   25   0:00  1:00   D
Rule    Brazil  1988  only  -     Feb   7    0:00  0      S
Rule    Brazil  1988  only  -     Oct   16   0:00  1:00   D
Rule    Brazil  1989  only  -     Jan   29   0:00  0      S
Rule    Brazil  1989  only  -     Oct   15   0:00  1:00   D
Rule    Brazil  1990  only  -     Feb   11   0:00  0      S
Rule    Brazil  1990  only  -     Oct   21   0:00  1:00   D
Rule    Brazil  1991  only  -     Feb   17   0:00  0      S
Rule    Brazil  1991  only  -     Oct   20   0:00  1:00   D
Rule    Brazil  1992  only  -     Feb   9    0:00  0      S
Rule    Brazil  1992  only  -     Oct   25   0:00  1:00   D
Rule    Brazil  1993  only  -     Jan   31   0:00  0      S
Rule    Brazil  1993  only  -     Oct   17   0:00  1:00   D
Rule    Brazil  1994  only  -     Feb   20   0:00  0      S
Rule    Brazil  1994  only  -     Oct   16   0:00  1:00   D
Rule    Brazil  1995  only  -     Feb   19   0:00  0      S
Rule    Brazil  1995  only  -     Oct   15   0:00  1:00   D
Rule    Brazil  1996  only  -     Feb   11   0:00  0      S
Rule    Brazil  1996  only  -     Oct   06   0:00  1:00   D
Rule    Brazil  1997  only  -     Feb   16   0:00  0      S
Rule    Brazil  1997  only  -     Oct   06   0:00  1:00   D
Rule    Brazil  1998  only  -     Mar   01   0:00  0      S
Rule    Brazil  1998  only  -     Oct   11   0:00  1:00   D
Rule    Brazil  1999  only  -     Feb   21   0:00  0      S
Rule    Brazil  1999  only  -     Oct   03   0:00  1:00   D
Rule    Brazil  2000  only  -     Feb   27   0:00  0      S
Rule    Brazil  2000  only  -     Oct   8    0:00  1:00   D
Rule    Brazil  2001  only  -     Feb   18   0:00  0      S


# Zone  NAME                          GMTOFF  RULES/SAVE    FORMAT  [UNTIL]
Zone    Brazil/DeNoronha              -2:00   Brazil        BRE%sT
Zone    posix/Brazil/DeNoronha        -2:00   Brazil        BRE%sT
Zone    right/Brazil/DeNoronha        -2:00   Brazil        BRE%sT
Zone    Brazil/East                   -2:00   Brazil        BRE%sT
Zone    posix/Brazil/East             -2:00   Brazil        BRE%sT
Zone    right/Brazil/East             -2:00   Brazil        BRE%sT

Zone    America/Sao_Paulo             -3:00   Brazil        BR%sT
Zone    America/Rio_de_Janeiro        -3:00   Brazil        BR%sT
Zone    America/Brasilia              -3:00   Brazil        BR%sT
Zone    posix/America/Sao_Paulo       -3:00   Brazil        BR%sT
Zone    posix/America/Rio_de_Janeiro  -3:00   Brazil        BR%sT
Zone    posix/America/Salvador        -3:00   Brazil        BR%sT
Zone    posix/America/Brasilia        -3:00   Brazil        BR%sT
Zone    posix/Brazil/Central          -3:00   Brazil        BR%sT
Zone    posix/Brazil/Brasilia         -3:00   Brazil        BR%sT
Zone    posix/Brazil/Sao_Paulo        -3:00   Brazil        BR%sT
Zone    posix/Brazil/Salvador         -3:00   Brazil        BR%sT
Zone    posix/Brazil/Rio_de_Janeiro   -3:00   Brazil        BR%sT
Zone    right/America/Sao_Paulo       -3:00   Brazil        BR%sT
Zone    right/America/Rio_de_Janeiro  -3:00   Brazil        BR%sT
Zone    right/America/Salvador        -3:00   Brazil        BR%sT
Zone    right/America/Brasilia        -3:00   Brazil        BR%sT
Zone    right/Brazil/Central          -3:00   Brazil        BR%sT
Zone    right/Brazil/Brasilia         -3:00   Brazil        BR%sT
Zone    right/Brazil/Sao_Paulo        -3:00   Brazil        BR%sT
Zone    right/Brazil/Salvador         -3:00   Brazil        BR%sT
Zone    right/Brazil/Rio_de_Janeiro   -3:00   Brazil        BR%sT
Zone    Brazil/Central                -3:00   Brazil        BR%sT
Zone    Brazil/Brasilia               -3:00   Brazil        BR%sT
Zone    Brazil/Sao_Paulo              -3:00   Brazil        BR%sT
Zone    Brazil/Rio_de_Janeiro         -3:00   Brazil        BR%sT
Zone    Brazil/Salvador               -3:00   Brazil        BR%sT

Zone    Brazil/West                   -4:00   Brazil        BRW%sT
Zone    Brazil/Manaus                 -4:00   Brazil        BRW%sT
Zone    Brazil/Rondonia               -4:00   Brazil        BRW%sT
Zone    Brazil/Roraima                -4:00   Brazil        BRW%sT
Zone    Brazil/Mato_Grosso            -4:00   Brazil        BRW%sT
Zone    posix/Brazil/Manaus           -4:00   Brazil        BRW%sT
Zone    posix/Brazil/Mato_Grosso      -4:00   Brazil        BRW%sT
Zone    right/Brazil/Manaus           -4:00   Brazil        BRW%sT
Zone    right/Brazil/Mato_Grosso      -4:00   Brazil        BRW%sT
Zone    posix/America/Manaus          -4:00   Brazil        BRW%sT
Zone    right/America/Manaus          -4:00   Brazil        BRW%sT

Zone    Brazil/Acre                   -5:00   Brazil        BRA%sT

Une ligne Rule définit la date et l'heure à laquelle s'effectue un changement de fuseau horaire, tandis qu'une ligne Zone référence la règle (Rule) qui la gérera. Notez que le nom de la Zone est en fait le nom du fichier dans le répertoire /usr/share/zoneinfo et qu'il peut y avoir plusieurs noms pour le même fuseau horaire afin qu'il soit plus facile de trouver sa propre zone.

Les commentaires du fichier expliquent comment installer ces fuseaux horaires en utilisant le compilateur de fichier d'information de fuseau horaire zic. Pour le rendre effectif, vous n'avez plus qu'à créer un lien (ou copier) du fichier d'information de fuseau horaire vers /etc/localtime. Pour certaines distributions, il y a une méthode de niveau supérieur (et préférable) pour régler le fuseau horaire décrite dans Section 3.1, « Sélection du fuseau horaire ».

Après avoir fait pointer /etc/localtime vers le fichier de fuseau horaire correct, les règles de cette zone s'appliquent déjà et les changements de fuseau sont automatiques ; vous n'avez plus à changer l'heure manuellement.

La séquence suivante de commandes illustre la dynamique de la gestion des fuseaux horaires sous Linux. Notez qu'elles ont toutes été exécutées en moins d'une minute :

bash$ ls -al /etc/localtime
lrwxrwxrwx  1 root root 35 May 22  2001 /etc/localtime -> /usr/share/zoneinfo/Brazil/Brasilia
bash$ date
Fri Mar 29 20:13:38 BRST 2002
bash# ln -sf /usr/share/zoneinfo/GMT /etc/localtime
bash$ date
Fri Mar 29 23:13:47 GMT 2002
bash# ln -sf /usr/share/zoneinfo/Brazil/Brasilia /etc/localtime
bash$ date
Fri Mar 29 20:14:03 BRST 2002

A 20:13, j'étais dans le fuseau horaire par défaut du Brésil (BRST) ; ensuite, je suis passé à l'heure GMT et l'horloge du système est passée à 23:13 ! Quand votre fuseau horaire passera à l'heure d'été, vous verrez un effet similaire, mais cette fois les règles sont toutes à l'intérieur de votre fichier /etc/localtime (qui ne change pas au contraire de cet exemple).

Une application tournant sur cette machine (par exemple un serveur web générant des fichiers journaux) sera sensible à ce changement ; il est donc très important pour les développeurs de se souvenir que l'heure locale est égale à l'heure universelle actuelle plus le fuseau horaire actuel, comme décrit dans Section 1, « L'heure et la date en informatique ».

Finalement, je suis revenu à mon fuseau horaire de départ.

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:27