tzset, tzname, timezone, daylight - Initialisation des données pour les conversions de temps.
La fonction
tzset() initialise la variable
tzname en utilisant
la variable d'environnement TZ. Cette fonction est appelée automatiquement
par les autres fonctions de conversion dépendant du fuseau horaire.
Dans un environnement type Système V, elle remplira également les variables
timezone
(secondes à l'ouest de Greenwich) et
daylight (0 si le fuseau n'a pas de changement
d'heure saisonnier, une valeur non nulle s'il y a des périodes durant l'année où
le changement horaire s'applique).
Si la variable TZ n'apparaît pas dans l'environnement,
tzname
est initialisée avec la meilleure approximation possible de l'heure
locale, comme indiqué dans le fichier
localtime,
au format
tzfile(5),
se trouvant dans le répertoire système des fuseaux horaires (voir plus bas).
(on utilise souvent
/etc/localtime
ici, en tant que lien symbolique vers le répertoire système des fuseaux horaires).
Si la variable TZ est présente dans l'environnement, mais que sa valeur
est `NULL', ou si sa valeur ne peut pas être interprétée en utilisant le format
indiqué plus bas, l'heure TU (temps universel) est utilisée.
La valeur de TZ peut prendre trois formats différents. Le premier correspond
à un endroit où il n'y a pas de décalage heure d'hiver/heure d'été :
-
std offset
la chaîne
std indique le nom du fuseau horaire, constitué d'au moins
trois caractères alphabétiques. La chaîne
offset suivant immédiatement
std indique la valeur à ajouter à l'heure locale pour obtenir l'heure
TU. La valeur
offset est positive si l'emplacement est à l'Ouest du
méridien 0, et négative si elle est à l'Est.
L'heure doit être entre 0 et 24, les minutes et les secondes
entre 0 et 59.
Le deuxième format est utilisé lorsqu'il existe des heures d'hiver et d'été différentes :
-
std offset dst [offset],start[/time],end[/time]
Les champs
std et
offset initiaux indiquent le fuseau horaire
comme précisé ci-dessus.
Les chaines
dst et
offset indiquent le fuseau et le décalage
de la zone correspondant à l'heure d'été. Si l'offset est omis, une valeur
par défaut est utilisée, correspondant à une heure de décalage vers l'avant.
Le champ
start indique la date de début de l'heure d'été,
et
end indique la date de retour à l'heure d'hiver. Ces deux champs
utilisent l'un des formats suivants :
- Jn
-
Indique le jour Julien, avec n compris entre 1 et 365. Le 29
Février n'est jamais compté, même pendant les années bissextiles.
- n
-
Indique le jour Julien, avec n compris entre 1 et 366. Le 29
Février est compté pendant les années bissextiles.
- Mm.s.j
-
Indique le jour j (0 <= j <= 6) de la semaine s
(1 <= s <= 5) du mois m (1 <= m <= 12). La semaine 1 est
la première semaine du mois dans laquelle le jour j apparaît
et la semaine 5 la dernière où le jour j apparaît. Le jour 0 est Dimanche.
Le champ
time indique l'heure du changement, sous forme d'heure locale
courante. Par défaut, la valeur est 02:00:00.
Le troisième format est utilisé pour indiquer que les informations de fuseau
horaire doivent être lues depuis un fichier :
-
:[filespec]
Si le fichier
filespec n'est pas indiqué, les informations sont
lues dans le fichier
localtime
se trouvant dans le répertoire système des fuseaux horaires, habituellement
/usr/share/zoneinfo.
Ce fichier est au format
tzfile(5)
Si
filespec est indique, il doit correspondre à un autre fichier au format
tzfile(5)
où on lira les informations.
Si
filespec ne commence pas par un `/', le chemin d'accès est
considéré à partir du répertoire système des fuseaux horaires.
Le répertoire système employé pour les fuseaux horaires dépend de la
version de la bibliothèque C. Les libc4 et libc5 utilisaient
/usr/lib/zoneinfo,
puis, à partir de la libc-5.4.6 le répertoire
/usr/share/zoneinfo
si le premier n'existait pas.
La bibliothèque GlibC 2 utilise le contenu de la variable
d'environnement TZDIR lorsqu'elle existe. Par défaut c'est normalement
/usr/share/zoneinfo.
Les fichiers se trouvant dans le répertoire sont :
localtime fichier d'information horaire locale
posixrules règles pour les TZ au format POSIX
Souvent,
/etc/localtime
est un lien symbolique vers
localtime
ou vers le fichier correct dans le répertoire système des fuseaux horaires.
Christophe Blaess, 1997-2003.