.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993, David Metcalfe .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH strftime 3 "8 février 2026" "Pages du manuel de Linux 6.18" .SH NOM strftime \- Formater la date et l'heure .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP,\ \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .P \fBsize_t strftime(\fPsize_t max; \fB char \fP\fIs\fP\fB[restrict \fP\fImax\fP\fB], size_t \fP\fImax\fP\fB,\fP \fB const char *restrict \fP\fIformat\fP\fB,\fP \fB const struct tm *restrict \fP\fItm\fP\fB);\fP .P \fBsize_t strftime_l(\fPsize_t max; \fB char \fP\fIs\fP\fB[restrict \fP\fImax\fP\fB], size_t \fP\fImax\fP\fB,\fP \fB const char *restrict \fP\fIformat\fP\fB,\fP \fB const struct tm *restrict \fP\fItm\fP\fB,\fP \fB locale_t \fP\fIlocale\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. Le détail de la structure \fItm\fP est donné dans \fI\fP. Consultez également \fBctime\fP(3). .P La spécification de format est une chaîne terminée par l’octet NULL, qui peut contenir des séquences de caractères spéciales appelées \fIspécifications de conversion\fP, chacune commençant par un caractère «\ %\ » et se terminant 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. .P Les caractères des séquences de caractères ordinaires (y compris l'octet NULL) sont copiés tels quels depuis \fIformat\fP dans \fIs\fP. Cependant, les caractères indicateurs de conversion sont remplacés comme montré dans la liste ci\-dessous. Dans cette liste, le(s) champ(s) de la structure \fItm\fP employés sont également détaillés. .TP \fB%a\fP Le nom abrégé du jour de la semaine en fonction de la localisation en cours, déterminé par \fItm_wday\fP. Les noms spécifiques utilisés par chaque locale peuvent être obtenus par un appel à \fBnl_langinfo\fP(3) avec \fBABDAY_\fP{\fB1\fP\[en]\fB7\fP} comme argument. .TP \fB%A\fP Le nom complet du jour de la semaine en fonction de la localisation en cours, déterminé par \fItm_wday\fP. Les noms spécifiques utilisés la locale en cours peuvent être obtenus par un appel à \fBnl_langinfo\fP(3) avec \fBDAY_\fP{\fB1\fP\[en]\fB7\fP} comme argument. .TP \fB%b\fP Le nom du mois abrégé en fonction de la localisation en cours, déterminé par \fItm_mon\fP. Les noms spécifiques utilisés par chaque locale peuvent être obtenus par un appel à \fBnl_langinfo\fP(3) avec \fBABMON_\fP{\fB1\fP\[en]\fB12\fP} comme argument. .TP \fB%B\fP Le nom complet du mois en fonction de la localisation en cours, déterminé par \fItm_mon\fP. Les noms spécifiques utilisés par chaque locale peuvent être obtenus par un appel à \fBnl_langinfo\fP(3) avec \fBMON_\fP{\fB1\fP\[en]\fB12\fP} comme argument. .TP \fB%c\fP La représentation usuelle de la date et de l'heure en fonction de la localisation en cours. Le formatage spécifique utilisé par la locale en cours peut être obtenu par un appel à \fBnl_langinfo\fP(3) avec \fBD_T_FMT\fP comme argument pour la spécification de conversion \fB%c\fP, et \fBERA_D_T_FMT\fP pour la spécification de conversion \fB%Ec\fP. Cela est équivalent pour la locale POSIX à \fB%a %b %e %H:%M:%S %Y\fP. .TP \fB%C\fP The century number (year/100) as a 2\-digit integer. (SU) (The \fB%EC\fP conversion specification corresponds to the name of the era.) (Calculated from \fItm_year\fP.) .TP \fB%d\fP Le jour du mois sous forme de nombre décimal, entre \fB01\fP et \fB31\fP, déterminé par \fItm_mday\fP. .TP \fB%D\fP Equivalent to \fB%m/%d/%y\fP. (Yecch\[em]for Americans only. Americans should note that in other countries \fB%d/%m/%y\fP is rather common. This means that in international context this format is ambiguous and should not be used.) (SU) .TP \fB%e\fP Like \fB%d\fP, the day of the month as a decimal number, but a leading zero is replaced by a space. (SU) (Calculated from \fItm_mday\fP.) .TP \fB%E\fP Modifier: use alternative ("era\-based") format; see below. (SU) .TP \fB%F\fP Equivalent to \fB%Y\-%m\-%d\fP (the ISO\ 8601 date format). (C99) .TP \fB%G\fP The ISO\ 8601 week\-based year (see NOTES) with century as a decimal number. The 4\-digit year corresponding to the ISO week number (see \fB%V\fP). This has the same format and value as \fB%Y\fP, except that if the ISO week number belongs to the previous or next year, that year is used instead. (TZ) (Calculated from \fItm_year\fP, \fItm_yday\fP, and \fItm_wday\fP.) .TP \fB%g\fP Like \fB%G\fP, but without century, that is, with a 2\-digit year (00\[en]99). (TZ) (Calculated from \fItm_year\fP, \fItm_yday\fP, and \fItm_wday\fP.) .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 \fB00\fP et \fB23\fP), déterminée par \fItm_hour\fP. .TP \fB%I\fP L'heure, sur 12 heures, sous forme de nombre décimal (entre \fB01\fP et \fB12\fP), déterminée par \fItm_hour\fP. .TP \fB%j\fP Le numéro du jour dans l'année (entre \fB001\fP et \fB366\fP), déterminée par \fItm_day\fP. .TP \fB%k\fP L'heure (sur 24 heures) sous forme de nombre décimal (intervalle \fB0\fP à \fB23\fP) ; les chiffres uniques étant précédés d'un blanc (voir aussi \fB%H\fP), déterminée par \fItm_hour\fP (TZ). .TP \fB%l\fP L'heure (sur 12 heures) sous forme de nombre décimal (intervalle \fB1\fP à \fB12\fP), les chiffres uniques étant précédés d'un blanc (voir aussi \fB%I\fP), déterminée par \fItm_hour\fP (TZ). .TP \fB%m\fP Le numéro du mois (entre \fB01\fP et \fB12\fP), déterminé par \fItm_mon\fP. .TP \fB%M\fP La minute, sous forme de nombre décimal (de \fB00\fP à \fB59\fP), déterminée par \fItm_min\fP. .TP \fB%n\fP A newline character. (SU) .TP \fB%O\fP Modifier: use alternative numeric symbols; see below. (SU) .TP \fB%p\fP L'une des deux chaînes «\ AM\ » ou «\ PM\ » en fonction de l'heure, déterminée par \fItm_hour\fP, ou la traduction de ces chaînes en fonction de la localisation en cours. Midi est traité comme «\ PM\ » et minuit comme «\ AM\ ». La représentation textuelle des chaînes « AM » et « PM » spécifique à la locale en cours peut être obtenue par un appel à \fBnl_langinfo\fP(3) avec \fBAM_STR\fP ou \fBPM_STR\fP comme argument respectif. .TP \fB%P\fP Comme \fB%p\fP mais en minuscule : «\ am\ » ou «\ pm\ » ou une chaîne locale équivalente, déterminée par \fItm_hour\fP (GNU). .TP \fB%r\fP The time in a.m.\& or p.m.\& notation. (SU) (The specific format used in the current locale can be obtained by calling \fBnl_langinfo\fP(3) with \fBT_FMT_AMPM\fP as an argument.) (In the POSIX locale this is equivalent to \fB%I:%M:%S %p\fP.) .TP \fB%R\fP L'heure au format 24 heures, \fB%H:%M\fP (SU). Pour avoir les secondes consultez \fB%T\fP. .TP \fB%s\fP The number of seconds since the Epoch, 1970\-01\-01 00:00:00 +0000 (UTC). (TZ) (Calculated from \fImktime(tm)\fP.) .TP \fB%S\fP La seconde, sous forme de nombre décimal (entre \fB00\fP et \fB60\fP), l'intervalle pouvant être supérieur à \fB60\fP pour autoriser des secondes de rattrapage, déterminée par \fItm_sec\fP. .TP \fB%t\fP A tab character. (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écimale, de \fB1\fP (lundi) à \fB7\fP, déterminé par \fItm_wday\fP. 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 entre \fB00\fP et \fB53\fP, en commençant le comptage au premier dimanche de l'année, déterminé par \fItm_yday\fP et \fItm_wday\fP. 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 entre \fB01\fP et \fB53\fP, où la semaine \fB1\fP est la première ayant au moins \fB4\fP jours dans l'année en cours, déterminé par \fItm_year\fP, \fItm_yday\fP et \fItm_wday\fP. 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 dans l'intervalle \fB0\fP−\fB6\fP, dimanche valant \fB0\fP, déterminé par \fItm_wday\fP. 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 (\fB00\fP−\fB53\fP), en commençant avec le premier lundi comme premier jour de la semaine \fB01\fP, déterminé par \fItm_yday\fP et \fItm_wday\fP. .TP \fB%x\fP La représentation usuelle de la date sans l'heure pour la locale en cours. Le format spécifique à la locale en cours peut être obtenu par un appel à \fBnl_langinfo\fP(3) avec \fBD_FMT\fP comme argument pour l'indicateur de conversion \fB%x\fP et \fBERA_D_FMT\fP pour l'indicateur de conversion \fB%Ex\fP. Cela est équivalent à \fB%m/%d/%y\fP dans la locale POSIX. .TP \fB%X\fP La représentation usuelle de l'heure sans la date pour la locale en cours. Le format spécifique à la locale en cours peut être obtenu par un appel à \fBnl_langinfo\fP(3) avec \fBT_FMT\fP comme argument pour l'indicateur de conversion \fB%X\fP et \fBERA_T_FMT\fP pour l'indicateur de conversion \fB%EX\fP. Cela est équivalent à \fB%H:%M:%S\fP dans la locale POSIX. .TP \fB%y\fP L'année, sous forme de nombre décimal, sans le siècle (comprise entre \fB00\fP et \fB99\fP), déterminée par \fItm_year\fP. L'indicateur de conversion \fB%Ey\fP correspond à l'année depuis le début de l'ère, désignée par l'indicateur de conversion \fB%EC\fP. .TP \fB%Y\fP L'année, sous forme de nombre décimal, incluant le siècle, déterminée par \fItm_year\fP. L'indicateur de conversion \fB%EY\fP correspond à la représentation alternative complète d'une année. .TP \fB%z\fP The \fI+hhmm\fP or \fI\-hhmm\fP numeric timezone (that is, the hour and minute offset from UTC). (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) The date and time in \fBdate\fP(1) format. (TZ) (Not supported in glibc2.) .TP \fB%%\fP Un caractère «\ %\ ». .P Some conversion specifications can be modified by preceding the conversion specifier character by the \fBE\fP or \fBO\fP \fImodifier\fP to indicate that an alternative format should be used. If the alternative format or specification does not exist for the current locale, the behavior will be as if the unmodified conversion specification were used. (SU) The Single UNIX Specification mentions \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, where the effect of the \fBO\fP modifier is to use alternative numeric symbols (say, roman numerals), and that of the \fBE\fP modifier is to use a locale\-dependent alternative representation. The rules governing date representation with the \fBE\fP modifier can be obtained by supplying \fBERA\fP as an argument to a \fBnl_langinfo\fP(3). One example of such alternative forms is the Japanese era calendar scheme in the \fBja_JP\fP glibc locale. .P \fBstrftime_l\fP() is equivalent to \fBstrftime\fP(), except it uses the specified \fIlocale\fP instead of the current locale. The behavior is undefined if \fIlocale\fP is invalid or \fBLC_GLOBAL_LOCALE\fP. .SH "VALEUR RENVOYÉE" .\" (This behavior applies since at least libc 4.4.4; .\" very old versions of libc, such as libc 4.4.1, .\" would return .\" .I max .\" if the array was too small.) Si la taille de la chaîne de résultat ne dépasse pas \fImax\fP octets (octet NULL compris), la fonction \fBstrftime\fP() renvoie le nombre d'octets écrits dans le tableau \fIs\fP, sans compter l'octet NULL final. Si la longueur de la chaîne dépasse \fImax\fP octets (octet NULL compris), \fBstrftime\fP() renvoie \fB0\fP et le contenu de la chaîne est indéfini. .P 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. Une chaîne \fIformat\fP vide renvoie aussi une chaîne vide. .SH ENVIRONNEMENT Les variables d'environnement \fBTZ\fP et \fBLC_TIME\fP sont utilisées. .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interface Attribut Valeur T{ .na .nh \fBstrftime\fP(), \fBstrftime_l\fP() T} Sécurité des threads MT\-Safe env locale .TE .SH NORMES .TP \fBstrftime\fP() C11, POSIX.1\-2008. .TP \fBstrftime_l\fP() POSIX.1\-2008. .SH HISTORIQUE .TP \fBstrftime\fP() .\" FIXME strftime() is in POSIX.1-2001 and POSIX.1-2008, but the details .\" in the standards changed across versions. Investigate and .\" write up. SVr4, C89. .TP \fBstrftime_l\fP() POSIX.1\-2008. .P Il y a une inclusion stricte entre les jeux de conversions fournies par ANSI C (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 pris en charge par la 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 \fBdate\fP(1) plusieurs extensions applicables également à \fBstrftime\fP(). La conversion \fB%F\fP est dans C99 et POSIX.1\-2001. .P 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 52 ou 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. De façon similaire, les deux premiers jours de janvier 2011 sont considérés comme étant dans la semaine 52 de l'année 2010. .SS "Notes de 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). .P 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\[ha]\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). .P 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 Si la chaîne de sortie dépasse \fImax\fP octets, \fIerrno\fP n'est pas défini. Cela empêche de distinguer ce cas d'erreur des cas où la chaîne \fIformat\fP aurait légitimement produit une chaîne de sortie de longueur nulle. POSIX.1\-2001 \fIne\fP spécifie \fIaucun\fP réglage de \fIerrno\fP pour \fBstrftime\fP(). .P Certaines versions boguées de \fBgcc\fP(1) se plaignent de l'utilisation de \fB%c\fP\ : \fIavertissement : \`%c\[aq] laisse seulement les 2 derniers chiffres de l'année dans certaines configurations linguistiques\fP . Bien sûr, les programmeurs sont encouragés à utiliser \fB%c\fP, car 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 .P .in +4n .EX size_t my_strftime(char *s, size_t max, const char *fmt, const struct tm *tm) { return strftime(s, max, fmt, tm); } .EE .in .P 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 EXEMPLES \fBformat de date compatible RFC\ 2822\fP (avec des paramètres régionaux en anglais pour %a et %b) .P .in +4n .EX "%a,\ %d\ %b\ %Y\ %T\ %z" .EE .in .P \fBformat de date compatible RFC\ 822\fP (avec des paramètres régionaux en anglais pour %a et %b) .P .in +4n .EX "%a,\ %d\ %b\ %y\ %T\ %z" .EE .in .SS "Programme exemple" Le programme suivant peut être utilisé pour expérimenter \fBstrftime\fP(). .P Voici quelques exemples de la chaîne résultat produite par l'implémentation de \fBstrftime\fP() dans la glibc : .P .in +4n .EX $\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" .EE .in .SS "Source du programme" .\" SRC BEGIN (strftime.c) \& .EX #include #include #include \& int main(int argc, char *argv[]) { char outstr[200]; time_t t; struct tm *tmp; \& if (argc != 2) { fprintf(stderr, "Usage: %s: \[rs]n", argv[0]); exit(EXIT_FAILURE); } \& 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 returned 0"); exit(EXIT_FAILURE); } \& printf("Result string is \[rs]"%s\[rs]"\[rs]n", outstr); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "VOIR AUSSI" \fBdate\fP(1), \fBtime\fP(2), \fBctime\fP(3), \fBnl_langinfo\fP(3), \fBsetlocale\fP(3), \fBsprintf\fP(3), \fBstrptime\fP(3) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Grégoire Scano . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .