Man page - tzfile(5)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr es ja zh_TW zh_CN deManual
tzfile
NOMDESCRIPTION
NOTES
Format version 2
Format version 3
Format version 4
ConsidĂ©rations dâinteropĂ©rabilitĂ©
ProblĂšmes courants dâinteropĂ©rabilitĂ©
VOIR AUSSI
TRADUCTION
NOM
tzfile â Informations de zone horaire
DESCRIPTION
Les fichiers dâinformations de zone horaire utilisĂ©s par tzset (3) sont classiquement trouvĂ©s sous un rĂ©pertoire avec un nom tel que /usr/share/zoneinfo . Ces fichiers utilisent le format dĂ©crit dans la RFC 8536 Ă propos dâInternet. Chaque fichier est une sĂ©quence de huit octets. Dans un fichier, un entier binaire est reprĂ©sentĂ© par une sĂ©quence de un ou plusieurs octets dans lâordre du rĂ©seau (gros boutiste ou octets de poids le plus fort en premier) avec tous les bits significatifs, un entier binaire signĂ© est reprĂ©sentĂ© en utilisant deux complĂ©ments et un boolĂ©en est reprĂ©sentĂ© par un entier binaire dâun octet qui est soit 0 (faux) ou 1 (vrai). Le format commence par un en-tĂȘte de 44 octets contenant les champs suivants :
|
- |
la sĂ©quence magique ASCII de quatre octets âTZifâ identifiant le fichier comme un fichier dâinformation de zone horaire ; |
||
|
- |
un octet identifiant la version du format de fichier et (Ă partir de 2021), soit un NUL ASCII â2â, â3â, ou â4â). |
||
|
- |
quinze octets contenant des zéros, réservés pour une utilisation future ; |
||
|
- |
six valeurs dâentier composĂ©es de quatre octets, dans lâordre suivant : |
tzh_ttisutcnt
le nombre dâindicateurs TU/locaux enregistrĂ©s dans le fichier (TU est le temps universel),
tzh_ttisstdcnt
le nombre dâindicateurs standard/locaux enregistrĂ©s dans le fichier,
tzh_leapcnt
le nombre de secondes intercalaires pour lesquelles des données sont enregistrées dans le fichier,
tzh_timecnt
le nombre dâinstants de transition pour lesquels des donnĂ©es sont enregistrĂ©es dans le fichier,
tzh_typecnt
le nombre de types dâheure locale pour lesquels des donnĂ©es sont enregistrĂ©es dans le fichier (ne doit pas ĂȘtre zĂ©ro),
tzh_charcnt
le nombre dâoctets de chaĂźnes dâabrĂ©viation de zone horaire enregistrĂ©es dans le fichier.
Lâen-tĂȘte ci-dessus est suivi des champs ci-aprĂšs dont la longueur dĂ©pend du contenu de lâen-tĂȘte :
|
- |
tzh_timecnt Valeurs sous forme dâentier signĂ© de quatre octets, triĂ©es dans lâordre ascendant. Ces valeurs sont Ă©crites dans lâordre dâoctets du rĂ©seau. Chacune est utilisĂ©e comme instant de transition (tel que renvoyĂ© par time (2)) quand les rĂšgles de calcul de lâheure locale changent ; |
||
|
- |
tzh_timecnt Valeurs sous forme dâentier non signĂ© dâun octet. Chacune, sauf la derniĂšre, indique lequel des diffĂ©rents types dâheure locale dĂ©crits dans le fichier est associĂ© avec la pĂ©riode de temps dĂ©butant avec lâinstant de transition indexĂ© de maniĂšre identique et continuant jusquâau prochain instant de transition (non inclus). Le dernier type de temps est prĂ©sent uniquement pour des raisons de vĂ©rification cohĂ©rente avec la chaine TZ de style POSIX.1-2017 dĂ©crite ci-aprĂšs. Ces valeurs servent dâindices dans le champ suivant ; |
||
|
- |
tzh_typecnt Entrées ttinfo , chacune définie comme suit : |
struct ttinfo {
|
int32_t |
||
|
tt_utoff; |
||
|
unsigned char |
||
|
tt_isdst; |
||
|
unsigned char |
||
|
tt_desigidx; |
};
Chaque structure est Ă©crite comme valeur sous forme dâentier de quatre octets pour tt_utoff , dans lâordre des octets du rĂ©seau, suivi par un boolĂ©en dâun octet pour tt_isdst et une valeur dâun octet pour tt_desigidx . Dans chaque structure, tt_utoff donne le nombre de secondes Ă ajouter au temps universel, tt_isdst indique si tm_isdst doit ĂȘtre rĂ©glĂ© par localtime (3) et tt_desigidx sert dâindice dans le tableau des octets dâabrĂ©viation de zone horaire qui suivent les entrĂ©es ttinfo dans le fichier. Si la chaine dĂ©signĂ©e est « 00 », lâentrĂ©e ttinfo est un paramĂštre fictif indiquant que lâheure locale nâest pas prĂ©cisĂ©e. La valeur tt_utoff nâest jamais Ă©gale Ă -2**31 pour permettre au clients 32 bits de lâindiquer sans erreur dâopĂ©rande. Aussi, dans les applications rĂ©elles, tt_utoff se situe dans lâintervalle [-89999, 93599] (câest-Ă -dire plus de -25 heures et moins de 26 heures). Cela permet une prise en charge facile par les implĂ©mentations qui gĂšrent dĂ©jĂ lâintervalle requis par POSIX [-24:59:59, 25:59:59] ;
|
- |
tzh_charcnt Octets reprĂ©sentant des dĂ©signations de zone horaire, qui sont des chaines terminĂ©es par un octet NULL, chacune indicĂ©es par les valeurs tt_desigidx mentionnĂ©es ci-dessus. Les chaines dâoctets peuvent se chevaucher si une est un suffixe de lâautre. Lâencodage de ces chaines nâest pas prĂ©cisé ; |
||
|
- |
tzh_leapcnt Paires de valeurs composĂ©es de quatre octets Ă©crits dans lâordre des octets du rĂ©seau. La premiĂšre valeur de chaque paire donne le temps non nĂ©gatif (tel que renvoyĂ© par time (2)) auquel les secondes intercalaires sont insĂ©rĂ©es ou le moment oĂč la table de secondes intercalaires expire. La seconde valeur est un entier signĂ© indiquant la correction qui est le nombre total de secondes intercalaires a insĂ©rer durant la pĂ©riode de temps dĂ©butant au temps indiquĂ©. Les paires de valeurs sont ordonnĂ©es strictement selon le temps. Chaque paire indique une seconde intercalaire soit positive soit nĂ©gative, exceptĂ© que si la derniĂšre paire a la mĂȘme correction que la prĂ©cĂ©dente, la derniĂšre paire indique lâinstant dâexpiration de la table de secondes intercalaires. Chaque seconde intercalaire se produit Ă la fin dâun mois calendaire du temps universel coordonnĂ© (UTC). La premiĂšre seconde intercalaire a un temps dâoccurrence non nĂ©gatif et est une seconde intercalaire positive que si, et uniquement si, sa correction est positive. La correction pour chaque seconde intercalaire aprĂšs la premiĂšre diffĂšre de la seconde intercalaire prĂ©cĂ©dente de 1 pour une seconde intercalaire positive ou de -1 pour une seconde intercalaire nĂ©gative. Si la table de secondes intercalaires est vide, la correction de seconde intercalaire est zĂ©ro pour tous les horodatages. Sinon, pour les horodatages avant le temps de la premiĂšre occurrence, la correction de seconde intercalaire est zĂ©ro si la premiĂšre correction de paire est 1 ou -1, et est autrement non prĂ©cisĂ©e (ce qui peut se produire seulement dans des fichiers tronquĂ©s au dĂ©marrage) ; |
||
|
- |
tzh_ttisstdcnt Indicateurs standard/locaux, chacun stockĂ© sous forme de boolĂ©en dâun octet. Ils indiquent si les instants de transition associĂ©s avec les types de temps local ont Ă©tĂ© indiquĂ©s comme temps standard ou comme temps local (horloge murale) ; |
||
|
- |
tzh_ttisutcnt Indicateurs TU/locaux, chacun stockĂ© sous forme de boolĂ©en dâun octet. Ils indiquent si les instants de transition associĂ©s avec les types de temps local ont Ă©tĂ© indiquĂ©s comme temps universel ou comme temps local. Si un indicateur TU/local est dĂ©fini, lâindicateur standard/local correspondant doit aussi ĂȘtre dĂ©fini. |
Les indicateurs standard/local et TU/local ont Ă©tĂ© conçus pour transformer les instants de transition de fichier TZif en transitions appropriĂ©es pour une autre zone horaire spĂ©cifiĂ©e Ă lâaide dâune chaine TZ de style POSIX.1-2017 nâayant pas de rĂšgles. Par exemple, quand TZ="EET2EEST" et quâil nây a pas de fichier TZif « EET2EEST », lâidĂ©e Ă©tait dâadapter les instants de transition dâun TZif avec le nom trĂšs connu « posixrules » qui existe uniquement dans ce but et qui est une copie du fichier « Europe/Brussels », un fichier avec un dĂ©calage de temps universel diffĂ©rent. POSIX nâindique pas ce comportement obsolĂšte de transformation, les rĂšgles par dĂ©faut dĂ©pendent de lâinstallation et aucune implĂ©mentation nâest connue pour prendre en charge cette fonctionnalitĂ© pour les horodatages aprĂšs 2037, aussi les utilisateurs dĂ©sirant par exemple lâheure grecque doivent plutĂŽt prĂ©ciser TZ="Europe/Athens" pour une meilleure couverture historique, revenant Ă TZ="EET2EEST,M3.5.0/3,M10.5.0/4" si une conformitĂ© Ă POSIX est nĂ©cessaire et que les anciens horodatages nâont pas besoin dâĂȘtre gĂ©rĂ©s de maniĂšre prĂ©cise.
La fonction Localtime (3) utilise normalement la premiÚre structure ttinfo dans le fichier si soit tzh_timecnt est zéro ou si son paramÚtre horaire est antérieur au premier instant de transition enregistré dans le fichier.
NOTES
Cette page de manuel documente <tzfile.h> dans lâarchive source de la glibc, consulter timezone/tzfile.h .
It seems that timezone (3) uses tzfile internally, but glibc refuses to expose it to userspace. This is most likely because the standardised functions are more useful and portable, and actually documented by glibc. It may only be in glibc just to support the non-glibc-maintained timezone data (which is maintained by some other entity).
Format version 2
Pour les fichiers de zone horaire dans le format 2, lâen-tĂȘte et les donnĂ©es ci-dessus sont suivies dâun second en-tĂȘte et de donnĂ©es, identiques en format sauf que huit octets sont utilisĂ©s pour chaque instant de transition ou de secondes intercalaires (le compte de secondes intercalaires est toujours de quatre octets). AprĂšs le deuxiĂšme en-tĂȘte et les donnĂ©es, vient une chaĂźne, entourĂ©e de sauts de lignes, du style de la variable dâenvironnement POSIX.1-2017 TZ, utilisĂ©e pour gĂ©rer les instants aprĂšs le dernier instant de transition stockĂ© dans le fichier ou pour tous les instants si le fichier nâa pas de transition. La chaine TZ est vide (câest-Ă -dire rien entre les deux sauts de ligne) sâil nâexiste pas de reprĂ©sentation de style POSIX.1-2017 pour de tels instants. Si non vide, la chaine TZ doit ĂȘtre dâaccord avec le type dâheure locale aprĂšs le dernier instant de transition si prĂ©sent dans les donnĂ©es des huit octets. Par exemple, si la chaine âWET0WEST,M3.5.0/1,M10.5.0â est indiquĂ©e, alors si le dernier instant de transition est en juillet, le type dâheure locale de la transition doit indiquer une heure dâĂ©tĂ© abrĂ©gĂ©e en âWESTâ qui est une heure Ă lâest du temps universel. Aussi, sâil y a au moins un instant de transition, le type de temps 0 est associĂ© Ă la pĂ©riode de temps dâun passĂ© illimitĂ© jusquâau, mais sans lâinclure, tout premier instant de transition.
Format version 3
Pour les fichiers de zone horaire de format version 3, la chaine TZ peut utiliser deux extensions mineures au format POSIX.1-2017 de TZ, comme dĂ©crites dans newtzset (3). PremiĂšrement, la partie heure peut ĂȘtre signĂ©e et aller de -167 jusquâĂ 167 au lieu des valeurs non signĂ©es requises par POSIX allant de 0 jusquâĂ 24. DeuxiĂšmement, lâheure dâĂ©tĂ© est effective toute lâannĂ©e si elle commence le premier janvier Ă 00:00 et se termine le 31 dĂ©cembre Ă 24:00 plus la diffĂ©rence entre le temps dâheure dâĂ©tĂ© et le temps standard.
Format version 4
Pour les fichiers TZif de format version 4, le premier enregistrement de seconde intercalaire peut avoir une correction qui nâest ni +1 ni -1, pour reprĂ©senter la troncature du fichier TZif au dĂ©marrage. Aussi, si deux ou plus transitions de seconde intercalaire sont prĂ©sentes et que la correction de la derniĂšre entrĂ©e Ă©gale celle qui la prĂ©cĂšde, la derniĂšre entrĂ©e indique lâexpiration de la table de secondes intercalaires au lieu dâune seconde intercalaire. Les horodatages aprĂšs cette expiration ne sont pas fiables par le fait que de prochaines publications ajouteront probablement des entrĂ©es de seconde intercalaire aprĂšs lâexpiration, et que les secondes intercalaires ajoutĂ©es changeront la façon dont les horodatages post-expiration seront traitĂ©s.
ConsidĂ©rations dâinteropĂ©rabilitĂ©
Des changements futurs au format peuvent ajouter plus de données.
Les fichiers de format version 1 sont considĂ©rĂ©s comme Ă©tant dâun format patrimonial et ne devraient plus ĂȘtre créés, puisquâils ne prennent pas en charge les instants de transition aprĂšs lâannĂ©e 2038. Les lecteurs qui ne comprennent que la version 1 doivent ignorer toute donnĂ©e allant au-delĂ de la fin dĂ©libĂ©rĂ©e de blocs de donnĂ©es version 1.
Autrement que pour la version 1, les Ă©crivains devraient gĂ©nĂ©rer le numĂ©ro de version le plus petit nĂ©cessaire pour les donnĂ©es dâun fichier. Par exemple, un Ă©crivain devrait crĂ©er un fichier de version 4 seulement si sa table de secondes intercalaires expire ou est tronquĂ©e au dĂ©marrage. De la mĂȘme façon, un Ă©crivain ne crĂ©ant pas un fichier de version 4 devrait crĂ©er un fichier de version 3 seulement si les extensions de chaine TZ sont nĂ©cessaires pour modeler prĂ©cisĂ©ment les instants de transition.
La sĂ©quence de modifications de temps dĂ©finie par lâen-tĂȘte et le bloc de donnĂ©es version 1 devrait ĂȘtre une sous-sĂ©quence contigĂŒe des modifications de temps dĂ©finis par lâen-tĂȘte et le bloc de donnĂ©es version 2+ et par le pied de page. Ces recommandations aident les Ă©crivains obsolescents de version 1 Ă sâaccorder avec les Ă©crivains actuels Ă partir des horodatages dans la sous-sĂ©quence contigĂŒe. Elles permettent aussi aux Ă©crivains ne gĂ©rant pas les Ă©crivains obsolescents dâutiliser un tzh_timecnt de zĂ©ro dans le bloc de donnĂ©es version 1 pour Ă©conomiser de lâespace.
Quand un fichier TZif contient une date dâexpiration de table de secondes intercalaires, les Ă©crivains de TZif devraient soit refuser de traiter les horodatages post-expiration ou les traiter comme si la date dâexpiration nâexistait pas (possiblement avec une indication dâerreur).
Les dĂ©signations de zone horaire devraient consister Ă au moins trois (3) et pas plus de six (6) caractĂšres ASCII de lâensemble alphanumĂ©rique, â-â, et â+â. Cela doit lâĂȘtre pour une compatibilitĂ© avec les exigences de POSIX pour lâabrĂ©viation des zones horaires.
Lors de la lecture dâun fichier de version 2 ou supĂ©rieure, les lecteurs devraient ignorer lâen-tĂȘte et le bloc de donnĂ©es version 1 sauf pour les omettre.
Les lecteurs devraient intĂ©grer le calcul des longueurs totales des en-tĂȘtes et des blocs de donnĂ©es et vĂ©rifier que tout tient dans la taille rĂ©elle du fichier en tant que partie dâune vĂ©rification de validitĂ© du fichier.
Lors dâune seconde intercalaire positive, les lecteurs devraient ajouter une seconde supplĂ©mentaire Ă la minute locale contenant la seconde juste avant la seconde intercalaire. Si cela se produit quand le dĂ©calage UTC nâest pas un multiple de 60 secondes, la seconde intercalaire arrive plus tĂŽt que la derniĂšre seconde de la minute locale et les secondes restantes de la minute sont numĂ©rotĂ©es jusquâĂ 60 au lieu du 59 habituel. Le dĂ©calage UTC nâest pas affectĂ©.
ProblĂšmes courants dâinteropĂ©rabilitĂ©
Cette section documente les problĂšmes courants de lecture et dâĂ©criture de fichiers TZif. La plupart dâentre eux concerne la crĂ©ation de fichiers TZif pour une utilisation par dâanciens lecteurs. Les buts de cette section sont :
|
- |
dâaider les Ă©crivains TZif Ă produire des fichiers Ă©vitant les piĂšges dans les lecteurs TZif anciens ou boguĂ©s ; |
||
|
- |
dâaider les lecteurs TZif Ă Ă©viter les piĂšges lors de la lecture créés par de futurs Ă©crivains TZif ; |
||
|
- |
dâaider de futurs auteurs de spĂ©cification Ă voir quelles sortes de problĂšme se produisent quand le format de TZif est modifiĂ©. |
Quand de nouvelles versions du format TZif ont Ă©tĂ© dĂ©finies, un but de conception Ă©tait quâun lecteur pouvait utiliser avec succĂšs un fichier TZif mĂȘme si le fichier Ă©tait dâune version de TZif postĂ©rieure au moment de la conception du lecteur. Lorsque la compatibilitĂ© nâĂ©tait pas totale, une tentative Ă©tait faite de limiter les bogues aux horodatages rarement utilisĂ©s et dâautoriser des contournements partiels simples dans les lecteurs conçus pour gĂ©nĂ©rer des donnĂ©es de nouvelle version utiles mĂȘme pour les lecteurs de version ancienne. Cette section veut documenter ces problĂšmes de compatibilitĂ© et les contournements, ainsi que les autres bogues courants dans les lecteurs.
Les problĂšmes dâinteropĂ©rabilitĂ© avec TZif incluent les suivants :
|
- |
certains lecteurs examinent uniquement les donnĂ©es de version 1. Comme contournement partiel, un Ă©crivain peut produire autant de donnĂ©es de version 1 que possible. Cependant, un lecteur devrait ignorer les donnĂ©es de version 1 et devrait utiliser une version 2+ mĂȘme si les horodatages natifs de lecteur ont seulement 32 bits ; |
||
|
- |
certains lecteurs conçus pour la version 2 pourraient mal gĂ©rer les horodatages aprĂšs la derniĂšre transition de fichier de version 3 ou supĂ©rieure, car ils ne peuvent analyser les extensions de POSIX.1-2017 dans les chaines de style TZ. Comme contournement partiel, un Ă©crivain peut produire plus de transitions que nĂ©cessaires de façon que seuls les horodatages dâun futur Ă©loignĂ© soient mal gĂ©rĂ©s par les lecteurs de version 2 ; |
||
|
- |
certains lecteurs conçus pour la version 2 ne gĂšrent pas les heures dâĂ©tĂ© permanentes avec des transitions aprĂšs 24:00 â par exemple, une chaine TZ âEST5EDT,0/0,J365/25â indiquant lâheure dâĂ©tĂ© permanente de lâest (-04). Comme contournement un Ă©crivain peut substituer lâheure standard pour deux zones horaires Ă lâest, par exemple, âXXX3EDT4,0/0,J365/23â pour une zone horaire avec une heure standard jamais utilisĂ©e (XXX, -03) et une heure dâĂ©tĂ© nĂ©gative (EDT, -04) toute lâannĂ©e. Sinon, comme contournement partiel, un Ă©crivain peut substituer lâheure standard pour la zone horaire est suivante â par exemple, âAST4â pour lâheure permanente standard atlantique (-04) ; |
||
|
- |
certains lecteurs conçus pour les versions 2 ou 3 et qui requiĂšrent une stricte conformitĂ© Ă la RFC 8536 rejettent les fichiers de version 4 dont la table des secondes intercalaires est tronquĂ©e au dĂ©but ou Ă la fin des dates dâexpiration ; |
||
|
- |
certains lecteurs ignorent le bas de page et à la place déduisent les horodatages futurs à partir du type de temps de la derniÚre transition. Comme contournement partiel, un écrivain peut produire plus de transitions que nécessaires ; |
||
|
- |
certains lecteurs nâutilisent pas le type 0 de temps pour les horodatages avant la premiĂšre transition, en cela ils infĂšrent un type de temps en utilisant une heuristique ne sĂ©lectionnant pas toujours un type 0 de temps. Comme contournement partiel, un Ă©crivain peut produire une premiĂšre transition factice (no-op) Ă une date rapprochĂ©e ; |
||
|
- |
certains lecteurs gĂšrent mal les horodatages avant la premiĂšre transition ayant un horodatage dâau moins -2**31. Les lecteurs qui gĂšrent seulement les horodatages de 32 bits sont vraisemblablement plus sujets Ă ce problĂšme, par exemple, quand ils traitent des transitions 64 bits et que seules quelques-unes sont reprĂ©sentables en 32 bits. Comme contournement partiel, un Ă©crivain peut produire une transition factice dâhorodatage -2**31 ; |
||
|
- |
certains lecteurs gÚrent mal une transition si son horodatage a la valeur minimale 64 bits signée possible. Les horodatages inférieurs à -2**59 ne sont pas recommandés ; |
||
|
- |
certains lecteurs gĂšrent mal les chaines TZ contenant â<â ou â>â. Comme contournement partiel, un Ă©crivain peut Ă©viter dâutiliser â<â ou â>â pour des abrĂ©viations de zone horaire contenant seulement des caractĂšres alphabĂ©tiques ; |
||
|
- |
beaucoup de lecteurs gÚrent mal les abréviations de zone horaire contenant des caractÚres non ASCII. Ces caractÚres ne sont pas recommandés ; |
||
|
- |
certains lecteurs peuvent mal gĂ©rer les abrĂ©viations contenant moins de trois caractĂšres ou plus de six, ou qui contiennent des caractĂšres ASCII autres que alphanumĂ©riques, â-â, et â+â. Ces abrĂ©viations ne sont pas recommandĂ©es ; |
||
|
- |
certains lecteurs gĂšrent mal les fichiers TZif qui spĂ©cifient les dĂ©calages dâheure dâĂ©tĂ© en temps universel qui sont infĂ©rieurs aux dĂ©calages de temps universel pour les temps standard correspondants. Ces lecteurs ne gĂšrent pas des emplacements tels que lâIrlande qui utilise lâĂ©quivalent de la chaine TZ âIST-1GMT0,M10.5.0,M3.5.0/1â, observant le temps standard (Irish Standard Time, +01) en Ă©tĂ© et lâheure dâĂ©tĂ© (GMT, +00) en hiver. Comme contournement partiel, un Ă©crivain peut produire des donnĂ©es pour lâĂ©quivalent de la chaine TZ âGMT0IST,M3.5.0/1,M10.5.0â, par consĂ©quent Ă©changeant le temps standard et lâheure dâĂ©tĂ©. Bien que ce contournement identifie mal quelle partie de lâannĂ©e utilise lâheure dâĂ©tĂ©, il enregistre les dĂ©calages de temps universel et les abrĂ©viations de zone horaire correctement. |
||
|
- |
certains lecteurs gĂ©nĂšrent des horodatages ambigus pour les secondes intercalaires positives qui arrivent quand le dĂ©calage UTC nâest pas un multiple de 60 secondes. Par exemple, dans une zone horaire avec le dĂ©calage UTC +01:23:45 et avec une seconde intercalaire positive 78796801 (1972-06-30 23:59:60 UTC), certains lecteurs feront correspondre Ă la fois 78796800 et 78796801 au temps local 01:23:45 le jour suivant au lieu de faire correspondre le dernier Ă 01:23:46, et ils feront correspondre 78796815 Ă 01:23:59 au lieu de 01:23:60. Cela nâa pas encore Ă©tĂ© un problĂšme pratique puisquâaucune autoritĂ© civile nâa observĂ© de tels dĂ©calages UTC depuis que les secondes intercalaires ont Ă©tĂ© introduites en 1972. |
Certains problĂšmes dâinteropĂ©rabilitĂ© sont des bogues de lecteur qui sont listĂ©s ici pour servir principalement dâavertissements aux dĂ©veloppeurs de lecteurs :
|
- |
certains lecteurs ne gĂšrent pas les horodatages nĂ©gatifs. Les dĂ©veloppeurs dâapplications distribuĂ©es devraient sâen souvenir sâils ont besoin de traiter des donnĂ©es dâavant 1970 ; |
||
|
- |
certains lecteurs gÚrent mal les horodatages avant la premiÚre transition ayant un horodatage non négatif. Les lecteurs qui ne gÚrent pas les horodatages négatifs sont plus sujets à ce problÚme ; |
||
|
- |
certains lecteurs gĂšrent mal les abrĂ©viations de zone horaire telles que â-08â qui contiennent â+â, â-â, ou des chiffres ; |
||
|
- |
certains lecteurs gÚrent mal les décalages de temps universel qui sont hors de la plage traditionnelle -12 à +12 heures, et par conséquent ne gÚrent pas des emplacements tels que Kiritimati qui sont en dehors de cette plage. |
||
|
- |
certains lecteurs gĂšrent mal les dĂ©calages de temps universel dans la plage [-3599, -1] secondes Ă partir du temps universel parce quâils font une division entiĂšre du dĂ©calage par 3600 pour obtenir 0 et alors ils affichent la partie heure sous forme â+00â. |
||
|
- |
certains lecteurs gÚrent mal les décalages de temps universel qui ne sont pas un multiple de 1 heure, 15 minutes ou 1 minute. |
VOIR AUSSI
time (2), localtime (3), tzset (3), tzselect (8), zdump (8), zic (8).
Olson A, Eggert P, Murchison K. The Time Zone Information Format (TZif). fév 2019 RFC 8536 Internet doi:10.17487/RFC8536 .
TRADUCTION
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> et David Prévot <david@tilapin.org>
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 .