| | |
strftime - Formater la date et l'heure.
#include <time.h>
size_t strftime (char *s, size_t max, const char *format, const struct tm
*tm);
La fonction strftime() formate les divers champs de la
structure tm en fonction de la chaîne de spécification format, puis place
le résultat dans la chaîne s de taille max.
Les caractères ordinaires présents
dans la chaîne format seront simplement copiés dans s. Les indicateurs de
conversion sont introduits par le caractère `%' et sont remplacés, dans la
chaîne s ainsi :
- %a
- Le nom abrégé du jour de la semaine, en fonction de
la localisation en cours.
- %A
- Le nom complet du jour de la semaine, en fonction
de la localisation en cours.
- %b
- Le nom abrégé du mois, en fonction de la
localisation en cours.
- %B
- Le nom complet du mois, en fonction de la localisation
en cours.
- %c
- La représentation classique de la date et de l'heure, suivant
la localisation en cours.
- %C
- Le siècle (année / 100) sous forme de nombre
de deux chiffres. (SU)
- %d
- Le quantième du mois sous forme de nombre décimal
(entre 01 et 31).
- %D
- Equivalent à %m/%d/%y. Seulement pour les américains.
Ces derniers doivent noter que les autres pays préfèrent le format %d/%m/%y.
Dans un contexte international ce format est ambigu et doit être évité.
(SU)
- %e
- Comme %d, le quantième du mois sous forme décimal, mais l'éventuel
zéro en tête est remplacé par un espace. (SU)
- %E
- Modificateur : Utiliser
un format de rechange. Voir plus bas. (SU)
- %G
- L'année ISO 8601 avec le siècle
comme nombre décimal. L'année sur quatre chiffres correspond au numéro de
la semaine ISO (voir %V). C'est le même format que %y, sauf que si le numéro
de semaine appartient à l'année suivante ou précédente, c'est celle-ci qui
est affichée à la place. (TZ)
- %g
- Comme %G sans le siècle, c'est à dire avec
une année sur deux chiffres (00-99). (TZ)
- %h
- Equivalent à %b. (SU)
- %H
- L'heure,
sur 24 heures, sous forme de nombre décimal (entre 00 et 23).
- %I
- L'heure,
sur 12 heures, sous forme de nombre décimal (entre 01 et 12).
- %j
- Le numéro
du jour dans l'année (entre 001 et 366). %k L'heure (sur 24 heures) sous forme
de nombre décimal (intervalle 0 à 23). Les chiffres uniques sont précédés
d'un blanc (voir aussi %H). (TZ).
- %l
- L'heure (sur 12 heures) sous forme de
nombre décimal (intervalle 1 à 12). Les chiffres uniques sont précédés d'un
blanc (voir aussi %I). (TZ).
- %m
- Le numéro du mois (entre 01 et 12).
- %M
- La
minute, sous forme de nombre décimal (00 à 59).
- %n
- Un caractère saut-de-ligne.
(SU)
- %O
- Modificateur : Utiliser un format de rechange. Voir plus bas. (SU)
- %p
- L'une des deux chaînes `AM' ou `PM' en fonction de l'heure, ou la traduction
de ces chaînes en fonctions de la localisation en cours. Midi est traité
comme `PM' et Minuit comme `AM'.
- %P
- Comme %p mais en minuscule: `am' ou `pm' ou
une chaîne locale équivalente. (GNU)
- %r
- L'heure en notation a.m. ou p.m. Dans
la localisation POSIX, c'est équivalent à `%I:%M:%S %p'. (SU)
- %R
- L'heure en
format 24 heures (%H:%M). (SU). Pour avoir les secondes voir %T.
- %s
- Le nombre
de secondes écoulées depuis le 1er Janvier 1970 à 00:00:00 UTC. (TZ).
- %S
- La seconde, sous forme de nombre décimal. (00-61)
- %t
- Un caractère Tab. (SU)
- %T
- L'heure en notation 24 heures (%H:%M:%S). (SU)
- %u
- Le jour de la semaine
sous forme décimal, de 1 (Lundi) à 7. Voir aussi %w. (SU)
- %U
- Le numéro de
la semaine dans l'année, sous forme de nombre décimal (00-53), en commençant
le comptage au premier Dimanche de l'année. Voir aussi %V et %W.
- %V
- Le numéro
de semaine ISO 8601:1988 de l'année en cours sous forme de nombre décimal
dans l'intervalle 01-53, où la semaine 1 est la première ayant au moins 4
jours dans l'année en cours, et où Lundi est le premier jour de la semaine.
Voir aussi %U et %W. (SU)
- %W
- Le numéro de la semaine dans l'année, sous forme
de nombre décimal (00-53), en commençant le comptage au premier Lundi de
l'année.
- %w
- Le numéro du jour de la semaine, sous forme décimale (0-6), Dimanche
valant 0. Voir aussi %u.
- %x
- La représentation usuelle de la date, sans l'heure,
dans la localisation en cours.
- %X
- La représentation usuelle de l'heure, sans
la date, dans la localisation en cours.
- %y
- L'année, sous forme de nombre
décimal, sans le siècle (entre 00 et 99).
- %Y
- L'année, sous forme de nombre
décimal, incluant le siècle.
- %z
- Le fuseau horaire sous forme de décalage
GMT. Nécessaire pour crééer des dates conformes à la RFC 822 (avec "%a,
%d %b %Y %H:%M:%S %z"). (GNU)
- %Z
- Le nom ou l'abréviation du fuseau horaire.
- %+
- La date et l'heure au format date(1)
. (TZ)
- %%
- Un caractère `%'.
Certains
indicateurs de conversion peuvent être modifiés en les faisant préceder
par le modificateur E ou O pour indiquer un format de rechange. Si le format
de rechange n'existe pas pour la localisation en cours, le comportement
ne sera pas modifié. Les Spécifications Single Unix mentionnent %Ec, %EC,
%Ex, %EX, %Ry, %EY, %Od, %Oe, %OH, %OI, %Om, %OM, %OS, %Ou, %OU, %OV, %Ow,
%OW, %Oy, où l'action du modificateur O est d'utiliser un autre format numérique
(par exemple des chiffres romains), et l'action de E est d'utiliser une représentaiton
dépendant de la localisation.
Les champs de la structure tm sont définis
dans <time.h>. Voir aussi ctime(3)
.
La fonction strftime() renvoie
le nombre de caractères écrits dans la table s, sans compter le caractère
NUL final. Si la chaîne était trop courte, strftime() renvoie 0, et le contenu
de la chaîne est indéfini. (Ceci, du moins, depuis la libc 4.4.4, des versions
plus anciennes de la libc, comme la 4.4.1, renvoyaient max si la chaîne était
trop courte)
Remarquez qu'une valeur de retour nulle n'indique pas toujours
une erreur. Dans de nombreuses localisations, par exemple, %p renvoie une
chaîne vide.
Les variables d'environnement TZ et LC_TIME sont
utilisées.
ANSI C, SVID 3, ISO 9899. Il y a une inclusion stricte
entre les jeux de conversions fournies par ANSI (sans marque), celles indiquées
par les Spécifications Single Unix (marquées SU), celles fournies par le
paquetage TimeZone d'Olson (marquées TZ), et celles de la glibc (marquées
GNU), sauf pour %+ qui n'est pas supporté par glibc2. D'un autre côté glibc2
offre plusieurs extensions. POSIX.1 ne traite que les conversions ANSI C.
POSIX.2 décrit à propos de date(1)
plusieurs extensions applicables également
à strftime.
date(1)
, time(2)
, ctime(3)
, setlocale(3)
, sprintf(3)
Christophe Blaess, 1997.
Table des matières
© 1996-2000 Adaptation française "Christophe Blaess"
| |