.\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" GNU texinfo documentation on glibc date/time functions. .\" Modified Sat Jul 24 18:03:44 1993 by Rik Faith (faith@cs.unc.edu) .\" Applied fix by Wolfgang Franke, aeb, 961011 .\" Corrected return value, aeb, 970307 .\" Added Single UNIX Spec conversions and %z, aeb/esr, 990329. .\" 2005-11-22 mtk, added Glibc Notes covering optional 'flag' and .\" 'width' components of conversion specifications. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH STRFTIME 3 "10 mai 2012" GNU "Manuel du programmeur Linux" .SH NOM strftime \- Formater la date et l'heure .SH SYNOPSIS .nf \fB#include \fP .sp \fBsize_t strftime(char *\fP\fIs\fP\fB, size_t \fP\fImax\fP\fB, const char *\fP\fIformat\fP\fB,\fP \fB const struct tm *\fP\fItm\fP\fB);\fP .fi .SH DESCRIPTION .\" FIXME POSIX says: Local timezone information is used as though .\" strftime() called tzset(). But this doesn't appear to be the case La fonction \fBstrftime\fP() formate les divers champs de la structure \fItm\fP en fonction de la chaîne de spécification \fIformat\fP, puis place le résultat dans la chaîne \fIs\fP de taille \fImax\fP. .PP La spécification de format est une chaîne terminée par un caractère nul, qui peut contenir des séquences de caractères spéciales appelées \fIspécifications de conversion\fP, chacune commence par un character «\ %\ », et se termine par un autre caractère, appelé \fIcaractère spécificateur de conversion\fP. Toutes les autres séquences de caractères sont des \fIséquences de caractères ordinaires\fP. .PP Les caractères des séquences de caractères ordinaires (y compris le caractère nul) sont copiés tels quels depuis \fIformat\fP dans \fIs\fP. Cependant, les caractères spécificateurs de conversion sont remplacés comme suit\ : .TP \fB%a\fP Le nom abrégé du jour de la semaine, en fonction de la localisation en cours. .TP \fB%A\fP Le nom complet du jour de la semaine, en fonction de la localisation en cours. .TP \fB%b\fP Le nom abrégé du mois, en fonction de la localisation en cours. .TP \fB%B\fP Le nom complet du mois, en fonction de la localisation en cours. .TP \fB%c\fP La représentation classique de la date et de l'heure, suivant la localisation en cours. .TP \fB%C\fP Le siècle (année/100) sous forme de nombre de deux chiffres. (SU) .TP \fB%d\fP Le quantième du mois sous forme de nombre décimal (entre 01 et 31). .TP \fB%D\fP Équivalent à \fB%m/%d/%y\fP. Seulement pour les américains. Ces derniers doivent noter que les autres pays préfèrent le format \fB%d/%m/%y\fP. Dans un contexte international, ce format est ambigu et doit être évité. (SU) .TP \fB%e\fP Comme \fB%d\fP, le quantième du mois sous forme décimal, mais l'éventuel zéro en tête est remplacé par un espace. (SU) .TP \fB%E\fP Modificateur\ : utiliser un format de rechange. Voir plus bas. (SU) .TP \fB%F\fP Équivalent à \fB%Y\-%m\-%d\fP (format de date ISO\ 8601). (C99) .TP \fB%G\fP L'année ISO\ 8601 basée sur les semaines (voir la section NOTES) sous forme de nombre décimal, avec le siècle. L'année sur quatre chiffres correspondant au numéro de la semaine ISO (consultez \fB%V\fP). C'est le même format que \fB%Y\fP, 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) .TP \fB%g\fP Comme \fB%G\fP sans le siècle, c'est\-à\-dire avec une année sur deux chiffres (00\-99). (TZ) .TP \fB%h\fP Équivalent à \fB%b\fP. (SU) .TP \fB%H\fP L'heure, sur 24 heures, sous forme de nombre décimal (entre 00 et 23). .TP \fB%I\fP L'heure, sur 12 heures, sous forme de nombre décimal (entre 01 et 12). .TP \fB%j\fP Le numéro du jour dans l'année (entre 001 et 366). .TP \fB%k\fP 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 \fB%H\fP). (TZ). .TP \fB%l\fP 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 \fB%I\fP). (TZ). .TP \fB%m\fP Le numéro du mois (entre 01 et 12). .TP \fB%M\fP La minute, sous forme de nombre décimal (00 à 59). .TP \fB%n\fP Un caractère saut\-de\-ligne. (SU) .TP \fB%O\fP Modificateur\ : utiliser un format de rechange. Voir plus bas. (SU) .TP \fB%p\fP 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\ ». .TP \fB%P\fP Comme \fB%p\fP mais en minuscule: «\ am\ » ou «\ pm\ » ou une chaîne locale équivalente. (GNU) .TP \fB%r\fP L'heure en notation a.m. ou p.m. Dans la localisation POSIX, c'est équivalent à \fB%I:%M:%S %p\fP. (SU) .TP \fB%R\fP L'heure en format 24 heures (\fB%H:%M\fP). (SU). Pour avoir les secondes consultez \fB%T\fP. .TP \fB%s\fP Le nombre de secondes écoulées depuis l'époque, 1er\ janvier 1970 à\ 00:00:00 UTC. (TZ). .TP \fB%S\fP La seconde, sous forme de nombre décimal (00\-60). L'intervalle peut être supérieur à 60 pour autoriser des secondes de rattrapage. .TP \fB%t\fP Un caractère de tabulation. (SU) .TP \fB%T\fP L'heure en notation 24 heures (\fB%H:%M:%S\fP). (SU) .TP \fB%u\fP Le jour de la semaine sous forme décimal, de 1 (lundi) à 7. Consultez aussi \fB%w\fP. (SU) .TP \fB%U\fP 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. Consultez aussi \fB%V\fP et \fB%W\fP. .TP \fB%V\fP Le numéro de semaine ISO\ 8601 (voir la section NOTES) 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. Consultez aussi \fB%U\fP et \fB%W\fP. (SU) .TP \fB%w\fP Le numéro du jour de la semaine, sous forme décimale (0\-6), dimanche valant 0. Consultez aussi \fB%u\fP. .TP \fB%W\fP 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. .TP \fB%x\fP La représentation usuelle de la date, sans l'heure, dans la localisation en cours. .TP \fB%X\fP La représentation usuelle de l'heure, sans la date, dans la localisation en cours. .TP \fB%y\fP L'année, sous forme de nombre décimal, sans le siècle (entre 00 et 99). .TP \fB%Y\fP L'année, sous forme de nombre décimal, incluant le siècle. .TP \fB%z\fP Le fuseau horaire (c'est\-à\-dire le décalage en heures et minutes par rapport à UTC) sous forme numérique \fI+hhmm\fP ou \fI\-hhmm\fP. (SU) .TP \fB%Z\fP Le nom ou l'abréviation du fuseau horaire. .TP \fB%+\fP .\" Nov 05 -- Not in Linux/glibc, but is in some BSDs (according to .\" their man pages) La date et l'heure au format \fBdate\fP(1). (TZ) (Non supporté par la glibc2) .TP \fB%%\fP Un caractère «\ %\ ». .PP Certaines spécifications de conversion peuvent être modifiées en faisant précéder le caractère spécificateur de conversion par le \fImodificateur\fP \fBE\fP ou \fBO\fP 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 \fB%Ec\fP, \fB%EC\fP, \fB%Ex\fP, \fB%EX\fP, \fB%Ey\fP, \fB%EY\fP, \fB%Od\fP, \fB%Oe\fP, \fB%OH\fP, \fB%OI\fP, \fB%Om\fP, \fB%OM\fP, \fB%OS\fP, \fB%Ou\fP, \fB%OU\fP, \fB%OV\fP, \fB%Ow\fP, \fB%OW\fP, \fB%Oy\fP, où l'action du modificateur \fBO\fP est d'utiliser un autre format numérique (par exemple des chiffres romains), et l'action de \fBE\fP est d'utiliser une représentation dépendant de la localisation. .PP Les champs de la structure \fItm\fP sont définis dans \fI\fP. Consultez aussi \fBctime\fP(3). .SH "VALEUR RENVOYÉE" La fonction \fBstrftime\fP() renvoie le nombre d'octets écrits dans le tableau \fIs\fP, sans compter l'octet nul final. Si la chaîne était trop courte, \fBstrftime\fP() renvoie 0, et le contenu de la chaîne est indéfini (ce comportement est valable depuis au moins la libc 4.4.4, des versions plus anciennes de la libc, comme la 4.4.1, renvoyaient \fImax\fP si la chaîne était trop courte). .LP Remarquez qu'une valeur de retour nulle n'indique pas toujours une erreur. Dans de nombreuses localisations, par exemple, \fB%p\fP renvoie une chaîne vide. .SH ENVIRONNEMENT Les variables d'environnement \fBTZ\fP et \fBLC_TIME\fP sont utilisées. .SH CONFORMITÉ SVr4, C89, C99. Il y a une inclusion stricte entre les jeux de conversions fournies par C ANSI (sans marque), celles indiquées par les Spécifications Single UNIX (marquées SU), celles fournies par le paquet timezone d'Olson (marquées TZ), et celles de la glibc (marquées GNU), sauf pour \fB%+\fP qui n'est pas supporté par glibc2. D'un autre côté glibc2 offre plusieurs extensions. POSIX.1 ne traite que les conversions C ANSI. POSIX.2 décrit à propos de \fBdate\fP(1) plusieurs extensions applicables également à \fBstrftime\fP(). La conversion \fB%F\fP est dans C99 et POSIX.1\-2001. Dans SUSv2, le \fB%S\fP spécifié permettait un intervalle de 00 à 61, pour autoriser la possibilité théorique d'une minute incluant une double seconde de rattrapage (il n'y a jamais eu de telle minute). .SH NOTES .SS "Numéros des semaines ISO\ 8601" \fB%G\fP, \fB%g\fP et \fB%V\fP produisent des valeurs calculées sur la base des semaines de l'année définies par la norme ISO\ 8601. Dans ce système, les semaines démarrent le lundi et sont numérotées de 01, pour la première semaine, jusqu'à 52 ou 53, pour la dernière semaine. La semaine 1 est la première semaine pour laquelle au moins quatre jours sont dans l'année (ce qui revient au même que de la définir comme la semaine du premier jeudi de l'année ou la semaine du 4 janvier). Quand trois jours, ou moins, se trouvent dans la première semaine calendaire de la nouvelle année se trouvent dans cette année, alors le système de numérotation des semaines de l'ISO\ 8601 place ces jours dans la semaine 53 de l'année précédente. Par exemple, le 1er janvier 2010 est un vendredi, ce qui signifie que seulement 3 jours se trouvent dans la semaine calendaire du début 2010. l'ISO\ 8601 considère donc ces jours comme faisant partie de la semaine 53 (\fB%V\fP) de l'année 2009 (\fB%G\fP)\ ; la semaine 01 de l'année 2010 pour l'ISO\ 8601 démarre le lundi 4 janvier 2010. .SS "Notes sur la glibc" .\" HP-UX and Tru64 also have features like this. La glibc fournit des extensions pour les spécifications de conversion (ces extensions ne sont pas spécifiées par POSIX.1\-2001 mais quelques autres systèmes fournissent des fonctionnalités similaires). Entre le caractère «\ %\ » et le caractère spécificateur de conversion, on peut spécifier un \fIattribut\fP optionnel et un champ \fIlargeur\fP (ceux\-ci précèdent les modificateurs \fBE\fP ou \fB0\fP s'ils sont présents). Les caractères attributs suivants sont autorisés\ : .TP \fB_\fP (souligné) Compléter une chaîne de résultat numérique avec des espaces. .TP \fB\-\fP (tiret) Ne pas compléter une chaîne de résultat numérique. .TP \fB0\fP Compléter une chaîne de résultat numérique avec des zéros même si le caractère spécificateur de conversion utilise des espaces par défaut. .TP \fB^\fP Convertir une chaîne alphabétique en une chaîne résultante en majuscule. .TP \fB#\fP Échanger la casse de la chaîne résultat (cet attribut ne fonctionne qu'avec certains caractères spécificateurs de conversion, et parmi ceux\-ci, il n'est vraiment utile qu'avec \fB%Z\fP). .PP Un spécificateur de largeur décimal optionnel peut suivre l'(éventuellement absent) attribut. Si la taille naturelle du champ est plus petite que cette largeur, la chaîne résultat sera alors complétée (sur la gauche) jusqu'à la largeur spécifiée. .SH BOGUES Certaines versions boguées de gcc se plaignent de l'utilisation de \fB%c\fP\ : \fIwarning: `%c' yields only last 2 digits of year in some locales\fP (Attention\ : ne donne que les deux derniers chiffres de l'année dans certaines localisations). Bien sûr, les programmeurs sont encouragés à utiliser \fB%c\fP, cela donne la représentation préférée de date et d'heure. Il y a eu des tas d'astuces bizarres pour éviter ce problème de \fBgcc\fP(1). Une relativement propre est d'utiliser une fonction intermédiaire\ : .in +4n .nf size_t my_strftime(char *s, size_t max, const char *fmt, const struct tm *tm) { return strftime(s, max, fmt, tm); } .fi .in De nos jours, \fBgcc\fP(1) fournit une option \fI\-Wno\-format\-y2k\fP pour éviter l'avertissement, et la solution de contournement ci\-dessus n'est plus nécessaire. .SH EXEMPLE \fBformat de date compatible RFC\ 2822\fP (avec des paramètres régionaux en anglais pour %a et %b) .PP .in +2n "%a,\ %d\ %b\ %Y\ %T\ %z" .PP \fBformat de date compatible RFC\ 822\fP (avec des paramètres régionaux en anglais pour %a et %b) .PP .in +2n "%a,\ %d\ %b\ %y\ %T\ %z" .SS "Programme exemple" Le programme suivant peut être utilisé pour expérimenter \fBstrftime\fP(). .PP Voici quelques exemples de la chaîne résultat produite par l'implémentation glibc de \fBstrftime\fP()\ : .in +4n .nf $\fB ./a.out \(aq%m\(aq\fP La chaîne résultat est "11" $\fB ./a.out \(aq%5m\(aq\fP La chaîne résultat est "00011" $\fB ./a.out \(aq%_5m\(aq\fP La chaîne résultat est " 11" .fi .in .PP Voici le source du programme\ : .nf #include #include #include int main(int argc, char *argv[]) { char outstr[200]; time_t t; struct tm *tmp; t = time(NULL); tmp = localtime(&t); if (tmp == NULL) { perror("localtime"); exit(EXIT_FAILURE); } if (strftime(outstr, sizeof(outstr), argv[1], tmp) == 0) { fprintf(stderr, "strftime a renvoyé 0"); exit(EXIT_FAILURE); } printf("Result string is \e"%s\e"\en", outstr); exit(EXIT_SUCCESS); } .fi .SH "VOIR AUSSI" \fBdate\fP(1), \fBtime\fP(2), \fBctime\fP(3), \fBsetlocale\fP(3), \fBsprintf\fP(3), \fBstrptime\fP(3) .SH COLOPHON Cette page fait partie de la publication 3.44 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse . .SH TRADUCTION Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a par l'équipe de traduction francophone au sein du projet perkamon . .PP Christophe Blaess (1996-2003), Alain Portal (2003-2006). Nicolas François et l'équipe francophone de traduction de Debian\ (2006-2009). .PP Veuillez signaler toute erreur de traduction en écrivant à ou par un rapport de bogue sur le paquet \fBmanpages\-fr\fR. .PP Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande «\ \fBman\ \-L C\fR \fI
\fR\ \fI\fR\ ».