ZIC(8) System Manager's Manual ZIC(8)

zic - Compilation des informations de fuseau horaire

zic [ option ... ] [ fichier ... ]

Zic lit le texte dans les fichiers indiqués sur la ligne de commande et crée les fichiers d'information pour les conversions horaires indiquées dans ces fichiers. Si un nom de fichier est “-”, l’entrée standard est lue

--version
Afficher le numéro de version et quitter.
--help
Afficher un bref message d'aide et terminer.
-b bloat
Sortie des données pour rétrocompatibilité comme lorsque bloat (gonflement) est indiquée. Si bloat est fat (gros), générer des entrées supplémentaires de données qui contournent les bogues potentiels et les incompatibilités avec d’anciens logiciels, tels que ceux gérant mal les données en 64 bits. Si bloat est slim (mince), faire que les fichiers de sortie soient petits. Cela peut aider à vérifier les bogues et les incompatibilités. La valeur par défaut est slim, car de toute façon les logiciels gérant mal les données en 64 bits, gèrent communément mal les estampilles temporelles pour les années après 2038. Consultez aussi l’option -r option pour une autre façon de modifier la sortie.
-d répertoire
Créer les fichiers d'informations pour les conversions horaires dans le répertoire indiqué plutôt que dans le répertoire standard indiqué plus bas.
-l fuseau_horaire
Utiliser le fuseau horaire indiqué comme heure locale. zic agira comme si l'entrée contenait une ligne de lien de la forme :

Link fuseau_horaire heure_locale

Si fuseau_horaire est -, tout lien déjà existant est supprimé.

-L fichier_secondes_rattrapage
Lire les informations concernant les secondes de rattrapage périodique à partir du fichier indiqué. Si cette option n'est pas indiquée, aucune seconde de rattrapage ne sera prise en compte dans les fichiers de sortie.
-p fuseau_horaire
Utiliser les règles de conversions horaires du fuseau indiqué lors de la gestion des chaînes non standard telles que « EET-2EEST » qui n’ont pas de règle de transition. zic agira comme si l'entrée contenait une ligne de lien de la forme :

Link fuseau_horaire règles_posix

Cette fonctionnalité est obsolète et faiblement prise en charge. Entre autres choses, elle ne devrait pas être utilisée pour les estampilles temporelles après l’année 2037, et elle ne devrait pas être combinée avec -b slim si les transitions de fuseau_horaire sont au temps standard ou universel (UT) au lieu du temps local.

Si fuseau_horaire est -, tout lien déjà existant est supprimé.

-r [@bas][/@haut]
Réduire la taille des fichiers de sortie en limitant leur applicabilité aux estampilles temporelles dans l’intervalle bas (inclus) à haut (exclus), où bas et haut sont des montants décimaux de secondes pouvant être signés depuis l’origine des temps Époque (Epoch — 1970-01-01 00:00:00 UTC). Les montants omis prennent par défaut les valeurs extrêmes. Par exemple, “zic -r @0” omet les données pour des estampilles temporelles négatives (c'est-à-dire, avant l’Époque) et “zic -r @0/@2147483648” produit des données pour des estampilles temporelles non négatives qui tiennent dans des entiers signés de 31 bits. Sur les plateformes avec date de GNU, “zic -r @$(date +%s)” omet les données des estampilles temporelles du passé. Consultez aussi l’option -b slim pour une autre façon de réduire la taille de la sortie.
-t fichier
Lors de la création des informations de temps local, mettre le lien de configuration dans le fichier indiqué plutôt que dans l’emplacement standard.
-v
Être prolixe et dénoncer les situations suivantes :

L’entrée indique un lien pour un lien.

Une année apparaissant dans un fichier de données est en dehors de l’intervalle représentable.

Un temps de 24:00 ou plus apparaît dans l’entrée. Les versions avant 1998 de zic interdisaient 24:00 et celles avant 2007 un temps de plus de 24:00.

Une règle conduit avant le début du mois ou après sa fin. Les versions avant 2004 de zic interdisaient cela.

Une abréviation de fuseau horaire utilise le format %z. Les versions avant 2015 de zic ne le prennent pas en charge.

Une estampille temporelle contient des fractions de seconde. Les versions avant 2018 de zic ne les prennent pas en charge.

L’entrée contient des abréviations qui sont mal gérées par les versions avant 2018 de zic à cause d’un vieux bogue de code. Ces abréviations incluent “L” pour “Link”, “mi” pour “min”, “Sa” pour “Sat”, et “Su” pour “Sun”.

Le fichier de sortie ne contient pas toutes les informations pour le futur d’un fuseau horaire, car le futur ne peut être synthétisé sous forme de chaîne TZ POSIX étendue. Par exemple, en 2019 ce problème s’est produit pour les règles de jour d’été pour la prévision du futur, car ces règles sont basées sur le calendrier iranien qui ne peut être représenté.

La sortie contient des données qui ne peuvent être gérées correctement par le code du client, conçu pour les anciens formats de sortie de zic. Ces problèmes de compatibilité affectent seulement les estampilles temporelles d’avant 1970 ou d’après le début de 2038.

Le fichier de sortie contient plus de 1200 transitions, qui pourraient être mal gérées par quelques clients. Le client de référence actuel gère au plus 2000 transitions. Les versions d’avant 2014 du client de référence gèrent au plus 1200 transitions.

Une abréviation de fuseau horaire est de moins de trois caractères ou de plus de six caractères. POSIX en requiert au moins trois et requiert que les implémentations en gèrent au moins six.

Un nom de fichier contient un octet qui n’est pas une lettre ASCII. “-”, “/”, ou “_”; ou il contient un composant de nom de plus de 14 octets ou commençant par “-”.

Les fichiers d’entrée utilisent le format décrit dans cette section. Les fichiers de sortie utilisent le format de tzfile(5).

Les fichiers d’entrée doivent être des fichiers texte, c'est-à-dire, ils doivent être une série de zéro ou plus de lignes, chacune se terminant par un octet de nouvelle ligne, contenant au plus 511 octets et sans octet NULL. L’encodage du texte d’entrée est classiquement en UTF-8 ou ASCII. Il doit avoir une représentation monooctet pour PPCS (POSIX Portable Character Set ⟨http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap06.html⟩ et les caractères sur plusieurs octets doivent consister entièrement d’octets non PPCS. Ces caractères non PPCS apparaissent classiquement dans les commentaires : bien que tous les noms de fichier et toutes les abréviations de fuseau horaire puissent contenir n’importe quel caractère, d’autres logiciels fonctionneront mieux s’ils sont limités à la syntaxe restreinte décrite dans l’option -v.

Les lignes d'entrées sont composées de champs, séparés les uns des autres par un ou plusieurs caractères blancs. Les caractères blancs sont : espace, saut de page, retour chariot, nouvelle ligne, tabulation et tabulation verticale. Les espaces en début et fin de ligne sont ignorées. Un caractère dièse « # » non protégé en entrée introduit un commentaire qui s'étend jusqu'à la fin de la ligne où il apparaît. Les caractères blancs et les dièses peuvent être inclus entre guillemets « " » lorsqu'ils doivent faire partie d'un champ. Toute ligne vide (après suppression des commentaires) est ignorée. Les lignes non vides peuvent être de trois types : les lignes de règle, de zone et de lien.

Les noms doivent être en anglais et sont indifférents à la casse. Ils apparaissent dans plusieurs contextes et incluent les noms de mois, de fin de semaine et des mots-clés tels que maximum, only, Rolling et Zone. Un nom peut être abrégé par son commencement, mais toute abréviation ne doit pas être ambiguë pour le contexte.

Une ligne de règle est de la forme :

Rule	NAME	FROM	TO	-	IN	ON	AT	SAVE	LETTER/S

Par exemple :

Rule	US	1967	1973	-	Apr	lastSun	2:00w	1:00d	D
Les champs composant une ligne de règle sont :
NAME (NOM)
Nom de l’ensemble de règles contenant cette ligne. Le nom doit débuter par un caractère qui n’est ni un chiffre ASCII ni “-” ni “+”. Pour permettre des extensions futures, un nom non protégé ne doit pas contenir des caractères de l’ensemble “!$%&'()*,/:;<=>?@[\]^`{|}~”.
FROM
Première année pour laquelle la règle s'applique. Tout nombre entier signé correspondant à une année peut être utilisé. On suppose qu'il s'agit du calendrier grégorien proleptique, l’année 0 précédant l’année 1. Le mot minimum (ou une abréviation) correspond à un passé indéfini. Le mot maximum (ou une abréviation) correspond à un futur indéfini. Les règles peuvent décrire des dates qui ne sont pas représentables par des valeurs de time(2), celles-ci étant ignorées. Cela permet aux règles d'être portables quels que soient les types de date employés par la machine hôte.
TO
Dernière année pour laquelle la règle s'applique. En plus des mots minimum et maximum (comme précédemment), le mot only (ou une abréviation) permet de réutiliser la valeur du champ FROM.
-
C’est un champ réservé et il doit toujours contenir “-” pour une compatibilité avec les anciennes versions de zic. Il était connu précédemment comme champ TYPE qui pouvait contenir des valeurs pour permettre à un script particulier une autre restriction dans laquelle la règle s’appliquerait pour “types” d’années.
IN
Mois auquel la règle prend effet. Les noms de mois peuvent être abrégés.
ON
Jour auquel la règle prend effet. Les formes acceptées comprennent :

5 Le 5 du mois lastSun Le dernier dimanche du mois lastMon Le dernier lundi du mois Sun>=8 Le premier dimanche après ou le 8 Sun<=25 Le dernier dimanche avant ou le 25

Un nom de jour (par exemple, Sunday) ou un nom précédé par “last” (par exemple, lastSunday) peuvent être abrégés ou complètement libellés. Il ne doit pas y avoir d'espace au sein du champ ON. Les constructions “<=” et “>=” peuvent aboutir à un jour dans le mois voisin. Par exemple, la combinaison IN-ON “Oct Sun>=31” positionne au premier dimanche suivant ou après le 31 octobre même si ce dimanche arrive en novembre.

AT
Heure du jour à laquelle la règle prend effet, relativement à 00:00, le début d’une journée calendaire. Les formes acceptées sont :

2 temps en heures 2:00 temps en heures et minutes 01:28:14 temps en heures, minutes et secondes 00:19:32.13 temps avec des secondes fractionnaires 12:00 midi, 12 heures après 00:00 15:00 3 après-midi, 15 heures après 00:00 24:00 fin du jour, 24 heures après 00:00 260:00 260 heures après 00:00 -2:30 2,5 heures avant 00:00 - équivalent à 0

Bien que zic arrondisse les temps à la seconde entière la plus proche, (en cas d’égalité à la valeur entière paire), les fractions peuvent être utiles pour des applications nécessitant une précision supérieure. Le format du source ne spécifie aucune précision maximale. Toutes ses formes peuvent être suivies par la lettre w si le temps indiqué est local ou de “wall clock” s si le temps indiqué est le temps standard sans ajustement pour l’heure d’été ou u (ou g ou z) si le temps indiqué est le temps universel. En l’absence d’indicateur, l’heure locale (horloge) est supposée. Ces formes ignorent les secondes additionnelles. Par exemple, si une seconde intercalaire est ajoutée à l’heure locale 00:59:60, “1:00” correspond à 3601 secondes après le minuit local au lieu des 3600 secondes habituelles. Le but est que la ligne de règle décrive l’instant auquel une horloge ou un calendrier définis pour le type de temps précisé dans le champ AT afficherait la date et l’heure du jour.

SAVE
Montant du temps à ajouter au temps local standard quand la règle est appliquée et si le temps résultant est standard ou à l’heure d’été. Ce champ a le même format que le champ AT à l’exception d’un ensemble différent de lettres de suffixe : s pour le temps standard et d pour l’heure d’été. La lettre de suffixe est classiquement omise, et par défaut vaut s si le décalage est zéro et d autrement. Les décalages négatifs sont autorisés. En Irlande, par exemple, l’heure d’été est respectée en hiver et a un décalage négatif par rapport à l’heure d’été irlandaise standard. Le décalage est simplement ajouté au temps standard. Par exemple, zic ne fait pas la distinction entre un temps standard de 10:30 plus un SAVE de 0:30 d’un temps standard de 10:00 plus un SAVE de 1:00.
LETTER/S
Affectation de la “variable part” (par exemple, “S” ou “D” dans “EST” ou “EDT”) des abréviations de fuseau horaire à utiliser quand cette règle est appliquée. Si ce champ est “-”, la part variable est nulle

Une ligne de zone est de la forme :

Zone	NAME	STDOFF	RULES	FORMAT	[UNTIL]

Par exemple :

Zone	Asia/Amman	2:00	Jordan	EE%sT	2017 Oct 27 01:00
Les champs constituant une ligne de zone sont les suivants :
NAME (NOM)
Nom du fuseau horaire. Il s'agit du nom utilisé pour la création du fichier de données de conversions horaires pour cette zone. Il ne doit pas contenir un composant de nom de fichier “."” ou “..”; Un composant de nom de fichier est une sous-chaîne maximale qui ne contient pas “/”.
STDOFF
Quantité de temps à ajouter au temps universel pour obtenir l'heure standard sans aucun ajustement pour l’heure d’été. Ce champ a le même format que les champs AT et SAVE des lignes de règle. Le champ débute avec un signe moins « - » si la quantité doit être soustraite de l’UTC.
RULES
Noms des règles qui s'appliquent dans cette zone, ou bien un champ du même format qu’une colonne SAVE de la ligne de règle, donnant la quantité horaire à ajouter au temps local standard de la zone et si le temps résultant est standard ou à l’heure d’été. Si ce champ est -, l'heure standard s'applique toujours dans cette zone.
FORMAT
Format pour les abréviations de fuseau horaire. La paire de caractères %s est utilisée pour montrer où la “variable part” de l’abréviation de fuseau horaire est attribuée. Alternativement, un format peut utiliser la paire de caractères %z pour indiquer le décalage de temps universel sous la forme ±hh, ±hhmm ou ±hhmmss, en utilisant la forme la plus courte ne perdant aucune information, où hh, mm et ss sont les heures, minutes et secondes est (+) ou ouest (−) du temps universel. Alternativement, une barre oblique (/) sépare les abréviations de temps standard et d’heure d’été. Pour se conformer à POSIX, une abréviation de fuseau horaire doit contenir uniquement des caractères ASCII alphanumériques, “+” et “-”.
UNTIL
Moment où changent le décalage par rapport à l'UTC ou les règles pour le lieu. Ce moment est indiqué sous la forme d’un des quatre champs YEAR [MONTH [DAY [TIME]]]. Si cela est spécifié, les informations pour le fuseau horaire seront créées à partir de la modification de la règle ou du décalage UTC jusqu'au moment indiqué, interprété en utilisant la règle appliquée juste avant la transition. Les mois, jour et heure du jour ont le même format que pour les champs IN, ON et AT d'une règle. Les colonnes qui suivent peuvent être omises, leur valeurs par défaut étant les premières valeurs possibles.
La ligne suivante doit être une ligne de “continuation” Elle a la même forme qu’une ligne de zone excepté que la chaîne “Zone” et le nom sont omis, car la ligne de continuation placera les informations débutant au temps indiqué comme l’information “until” dans la ligne précédente dans le fichier utilisé par la ligne précédente. Les lignes de continuation peuvent contenir des informations “until” tout comme les lignes de zone le font, indiquant que la ligne suivante est une continuation supplémentaire.

Si une zone change au même moment qu’une règle aurait pris effet dans la zone précédente ou dans la ligne de continuation, la règle est ignorée. Une zone ou une ligne de continuation L avec un ensemble de règles nommé débute avec le temps standard par défaut : c'est-à-dire, n’importe quelle estampille temporelle de L précédant la règle de L précédente utilise la règle en usage après la première transition de L dans le temps standard. Dans une même zone, c’est une erreur si deux règles prennent effet au même moment ou si deux modifications de zone se produisent au même moment.

Si une ligne de continuation soustrait N secondes du décalage de temps universel après une transition qui serait interprétée postérieure en utilisant le décalage et les règles de la ligne de continuation, le temps “until” de la zone précédente ou de la ligne de continuation est interprété selon le décalage et les règles de temps universel de la ligne de continuation, et toute règle qui autrement prendrait effet dans les N secondes suivantes est à la place considérée comme prenant effet simultanément. Par exemple :


# Rule NAME FROM TO - IN ON AT SAVE LETTER/S Rule US 1967 2006 - Oct lastSun 2:00 0 S Rule US 1967 1973 - Apr lastSun 2:00 1:00 D # Zone  NAME STDOFF RULES FORMAT [UNTIL] Zone  America/Menominee -5:00 - EST 1973 Apr 29 2:00 -6:00 US C%sT
Ici, une lecture erronée serait qu’il y eu deux changements d’heure le 1973-04-29, le premier de 02:00 EST (-05) à 01:00 CST (-06) et le second une heure après de 02:00 CST (-06) à 03:00 CDT (-05). Cependant, zic interprète cela plus judicieusement comme une seule transition de 02:00 CST (-05) à 02:00 CDT (-05).

Une ligne de lien est de la forme :

Link	CIBLE	NOM-LIEN

Par exemple :

Link	Europe/Istanbul	Asia/Istanbul
Le champ CIBLE doit exister sous forme de champ NAME dans une ligne de zone. Le champ NOM-LIEN sert de lien alternatif pour cette zone. Il possède la même syntaxe que le champ NAME de la ligne de zone.

Sauf pour celles de continuation, les lignes peuvent apparaitre dans n’importe quel ordre dans l’entrée. Cependant, le comportement est indéfini si plusieurs lignes de zone ou de lien définissent le même nom ou si la source d’un lien est la cible de l’autre.

Le fichier décrivant les secondes de rattrapage périodique peut comporter une ligne de saut et une ligne d’expiration. Les lignes de rattrapage ont la forme suivante :

Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S

Par exemple :

Leap	2016	Dec	31	23:59:60	+	S
Les champs YEAR, MONTH, DAY et HH:MM:SS indiquent quand la seconde de rattrapage se produit. Le champ CORR doit être “+” si une seconde a été ajoutée ou “-” si une seconde a été sautée. Le champ R/S doit être (une abréviation de) “Stationary” si le temps de la seconde de rattrapage indiqué par les autres champs doit être interprété comme UTC ou (une abréviation de) “Rolling” si le temps de la seconde de rattrapage indiqué par les autres champs doit être interprété comme celui local (horloge).

Une ligne d’expiration, si elle existe, est de la forme :

Expires	YEAR	MONTH	DAY	HH:MM:SS

Par exemple :

Expires	2020	Dec	28	00:00:00
Les champs YEAR, MONTH, DAY et HH:MM:SS indiquent l’estampille temporelle d’expiration en UTC pour la table des secondes de rattrapage. zic produit cette estampille temporelle en tronquant la fin du fichier de sortie pour l’estampille temporelle. S’il n’existe pas de ligne d’expiration, zic accepte aussi un commentaire “#expires E ..."” où E est l’estampille temporelle d’expiration sous forme de nombre entier décimal depuis l’Époque, sans tenir compte des secondes de rattrapage. Cependant, le commentaire “#expires” est une fonctionnalité obsolète et le fichier de secondes de rattrapage devrait utiliser une ligne d’expiration plutôt que de reposer sur un commentaire.

Voici un exemple étendu d’entrée de zic, conçu pour illustrer la plupart de ses fonctionnalités. Dans cet exemple, les règles EU valent pour L’Union européenne et pour son prédécesseur, La Communauté européenne.

# Rule NAME FROM TO - IN ON AT SAVE LETTER/S Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 - Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S Rule EU 1977 only - Sep lastSun 1:00u 0 - Rule EU 1978 only - Oct 1 1:00u 0 - Rule EU 1979 1995 - Sep lastSun 1:00u 0 - Rule EU 1981 max - Mar lastSun 1:00u 1:00 S Rule EU 1996 max - Oct lastSun 1:00u 0 - # Zone NAME STDOFF RULES FORMAT [UNTIL] Zone Europe/Zurich 0:34:08 - LMT 1853 Jul 16 0:29:45.50 - BMT 1894 Jun 1:00 Swiss CE%sT 1981 1:00 EU CE%sT Link Europe/Zurich Europe/Vaduz
Dans cet exemple le fuseau horaire est appelé Europe/Zurich mais il a un alias, Europe/Vaduz. Cet exemple indique que Zurich était 34 minutes et 8 secondes à l’est du TU jusqu’au 16/07/1853 à 00:00, quand le décalage officiel a été changé à 7°26′22.50″, qui mène au résultat 0:29:45.50. zic le traite en l’arrondissant à 0:29:46. Après le 01/06/1894 à 00:00, le décalage du TU est devenu une heure et les règles suisses d’heure d’été (définies par les lignes commençant avec “Rule Swiss”) ont été appliquées. De 1981 à maintenant, les règles d’heure d’été de l’EU ont été appliquées et le décalage de TU est demeuré d’une heure.

En 1941 et 1942, l’heure d’été s’est appliquée du premier lundi de mai à 01:00 jusqu’au premier lundi d’octobre à 02:00. Les règles d’heure d’été de l’UE avant 1981 n’ont aucun effet ici mais sont incluses pour complétude. Depuis 1981, l’heure d’été commence le dernier dimanche de mars à 01:00 UTC et se terminait le dernier dimanche de septembre à 01:00 UTC, mais cela a changé pour le dernier dimanche d’octobre depuis 1996.

Dans un but d’affichage, “LMT” et “BMT” ont été initialement utilisés respectivement. Depuis que les règles suisses et plus tard les règles de l’UE ont été appliquées, l’abréviation de fuseau horaire a été CET pour le temps standard et CEST pour l’heure d’été.

/etc/localtime
Fichier par défaut du fichier de fuseau horaire.
/usr/share/zoneinfo
Répertoire par défaut d’information de fuseau horaire.

Pour les zones ayant plus de deux types d'heure locale, il peut être nécessaire d'utiliser l'heure locale standard dans le champ AT de la première règle de transition pour s'assurer que la première heure de transition du fichier compilé soit correcte.

Si, pour une zone horaire, une avance d’horloge provoquée par le début de l’heure d’été coïncide et est égal avec un recul d’horloge provoqué par un changement de décalage de TU, zic produit une transition unique vers l’heure d’été au nouveau décalage de TU sans modification du temps local (horloge). Pour obtenir des transitions séparées, plusieurs lignes de continuation de zone, précisant les moments de transition au temps universel, sont à utiliser.

tzfile(5), zdump(8)

La traduction française de cette page de manuel a été créée par Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.