Man page - strftime(3)

Packages contains this manual

Available languages:

en fr ja de

Manual

strftime

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ENVIRONNEMENT
ATTRIBUTS
STANDARDS
HISTORIQUE
NOTES
Numéros des semaines ISO 8601
Notes de la glibc
BOGUES
EXEMPLES
Programme exemple
Source du programme
VOIR AUSSI
TRADUCTION

NOM

strftime - Formater la date et l’heure

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <time.h>

size_t strftime(char s [restrict . max ], size_t max ,
const char *restrict
format ,
const struct tm *restrict
tm );

size_t strftime_l(char s [restrict . max ], size_t max ,
const char *restrict
format ,
const struct tm *restrict
tm ,
locale_t
locale );

DESCRIPTION

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 . Le détail de la structure tm est donné dans <time.h> . Consultez également ctime (3).

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 spĂ©cifications de conversion , chacune commençant par un caractĂšre « % » et se terminant par un autre caractĂšre, appelĂ© caractĂšre spĂ©cificateur de conversion . Toutes les autres sĂ©quences de caractĂšres sont des sĂ©quences de caractĂšres ordinaires .

Les caractĂšres des sĂ©quences de caractĂšres ordinaires (y compris l’octet NULL) sont copiĂ©s tels quels depuis format dans s . 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 tm employĂ©s sont Ă©galement dĂ©taillĂ©s.

%a

Le nom abrĂ©gĂ© du jour de la semaine en fonction de la localisation en cours, dĂ©terminĂ© par tm_wday . Les noms spĂ©cifiques utilisĂ©s par chaque locale peuvent ĂȘtre obtenus par un appel Ă  nl_langinfo (3) avec ABDAY_ { 1 – 7 } comme argument.

%A

Le nom complet du jour de la semaine en fonction de la localisation en cours, dĂ©terminĂ© par tm_wday . Les noms spĂ©cifiques utilisĂ©s la locale en cours peuvent ĂȘtre obtenus par un appel Ă  nl_langinfo (3) avec DAY_ { 1 – 7 } comme argument.

%b

Le nom du mois abrĂ©gĂ© en fonction de la localisation en cours, dĂ©terminĂ© par tm_mon . Les noms spĂ©cifiques utilisĂ©s par chaque locale peuvent ĂȘtre obtenus par un appel Ă  nl_langinfo (3) avec ABMON_ { 1 – 12 } comme argument.

%B

Le nom complet du mois en fonction de la localisation en cours, dĂ©terminĂ© par tm_mon . Les noms spĂ©cifiques utilisĂ©s par chaque locale peuvent ĂȘtre obtenus par un appel Ă  nl_langinfo (3) avec MON_ { 1 – 12 } comme argument.

%c

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 Ă  nl_langinfo (3) avec D_T_FMT comme argument pour la spĂ©cification de conversion %c , et ERA_D_T_FMT pour la spĂ©cification de conversion %Ec . Cela est Ă©quivalent pour la locale POSIX Ă  %a %b %e %H:%M:%S %Y .

%C

Le siĂšcle (annĂ©e/100) sous forme d’un nombre Ă  deux chiffres, dĂ©terminĂ© par tm_year (SU). L’indicateur de conversion %EC correspond au nom de l’ùre.

%d

Le jour du mois sous forme de nombre décimal, entre 01 et 31 , déterminé par tm_mday .

%D

Équivalent Ă  %m/%d/%y . Uniquement 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 jour du mois sous forme dĂ©cimale, dĂ©terminĂ© par tm_day , mais l’éventuel zĂ©ro en tĂȘte est remplacĂ© par une espace (SU).

%E

Modificateur : utiliser un format de rechange. Voir plus bas (SU).

%F

Équivalent à %Y-%m-%d , format de date ISO 8601 (C99).

%G

L’annĂ©e ISO 8601 basĂ©e sur les semaines (voir la section NOTES) sous forme de nombre dĂ©cimal, avec le siĂšcle, dĂ©terminĂ©e par tm_year , tm_yday et tm_wday . L’annĂ©e sur quatre chiffres correspondant au numĂ©ro de la semaine ISO (consultez %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 , mais sans le siĂšcle, c’est-Ă -dire avec une annĂ©e sur deux chiffres [ 00 − 99 ], dĂ©terminĂ©e par tm_year , tm_yday et tm_wday (TZ).

%h

Équivalent à %b (SU).

%H

L’heure, sur 24 heures, sous forme de nombre dĂ©cimal (entre 00 et 23 ), dĂ©terminĂ©e par tm_hour .

%I

L’heure, sur 12 heures, sous forme de nombre dĂ©cimal (entre 01 et 12 ), dĂ©terminĂ©e par tm_hour .

%j

Le numĂ©ro du jour dans l’annĂ©e (entre 001 et 366 ), dĂ©terminĂ©e par tm_day .

%k

L’heure (sur 24 heures) sous forme de nombre dĂ©cimal (intervalle 0 Ă  23 ) ; les chiffres uniques Ă©tant prĂ©cĂ©dĂ©s d’un blanc (voir aussi %H ), dĂ©terminĂ©e par tm_hour (TZ).

%l

L’heure (sur 12 heures) sous forme de nombre dĂ©cimal (intervalle 1 Ă  12 ), les chiffres uniques Ă©tant prĂ©cĂ©dĂ©s d’un blanc (voir aussi %I ), dĂ©terminĂ©e par tm_hour (TZ).

%m

Le numéro du mois (entre 01 et 12 ), déterminé par tm_mon .

%M

La minute, sous forme de nombre décimal (de 00 à 59 ), déterminée par tm_min .

%n

Un caractĂšre de saut de ligne (SU).

%O

Modificateur : utiliser des symboles numériques alternatifs. Voir plus bas (SU).

%p

L’une des deux chaĂźnes « AM » ou « PM » en fonction de l’heure, dĂ©terminĂ©e par tm_hour , 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 Ă  nl_langinfo (3) avec AM_STR ou PM_STR comme argument respectif.

%P

Comme %p mais en minuscule : « am » ou « pm » ou une chaßne locale équivalente, déterminée par tm_hour (GNU).

%r

L’heure au format 12 heures (SU). Le format utilisĂ© par la locale courante peut ĂȘtre obtenu en appelant nl_langinfo (3) avec T_FMT_AMPM comme argument. Dans la locale POSIX, cela est Ă©quivalent Ă  %I:%M:%S %p .

%R

L’heure au format 24 heures, %H:%M (SU). Pour avoir les secondes consultez %T .

%s

Le nombre de secondes Ă©coulĂ©es depuis l’Époque, 1er janvier 1970 à 00:00:00 UTC, dĂ©terminĂ© par mktime(tm) (TZ).

%S

La seconde, sous forme de nombre dĂ©cimal (entre 00 et 60 ), l’intervalle pouvant ĂȘtre supĂ©rieur Ă  60 pour autoriser des secondes de rattrapage, dĂ©terminĂ©e par tm_sec .

%t

Un caractĂšre de tabulation (SU).

%T

L’heure en notation 24 heures, %H:%M:%S (SU).

%u

Le jour de la semaine sous forme décimale, de 1 (lundi) à 7 , déterminé par tm_wday . Consultez aussi %w (SU).

%U

Le numĂ©ro de la semaine dans l’annĂ©e, sous forme de nombre dĂ©cimal entre 00 et 53 , en commençant le comptage au premier dimanche de l’annĂ©e, dĂ©terminĂ© par tm_yday et tm_wday . Consultez aussi %V et %W .

%V

Le numĂ©ro de semaine ISO 8601 (voir la section NOTES) de l’annĂ©e en cours sous forme de nombre dĂ©cimal entre 01 et 53 , oĂč la semaine 1 est la premiĂšre ayant au moins 4 jours dans l’annĂ©e en cours, dĂ©terminĂ© par tm_year , tm_yday et tm_wday . Consultez aussi %U et %W (SU).

%w

Le numĂ©ro du jour de la semaine, sous forme dĂ©cimale dans l’intervalle 0 − 6 , dimanche valant 0 , dĂ©terminĂ© par tm_wday . Consultez aussi %u .

%W

Le numĂ©ro de la semaine dans l’annĂ©e, sous forme de nombre dĂ©cimal ( 00 − 53 ), en commençant avec le premier lundi comme premier jour de la semaine 01 , dĂ©terminĂ© par tm_yday et tm_wday .

%x

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 Ă  nl_langinfo (3) avec D_FMT comme argument pour l’indicateur de conversion %x et ERA_D_FMT pour l’indicateur de conversion %Ex . Cela est Ă©quivalent Ă  %m/%d/%y dans la locale POSIX.

%X

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 Ă  nl_langinfo (3) avec T_FMT comme argument pour l’indicateur de conversion %X et ERA_T_FMT pour l’indicateur de conversion %EX . Cela est Ă©quivalent Ă  %H:%M:%S dans la locale POSIX.

%y

L’annĂ©e, sous forme de nombre dĂ©cimal, sans le siĂšcle (comprise entre 00 et 99 ), dĂ©terminĂ©e par tm_year . L’indicateur de conversion %Ey correspond Ă  l’annĂ©e depuis le dĂ©but de l’ùre, dĂ©signĂ©e par l’indicateur de conversion %EC .

%Y

L’annĂ©e, sous forme de nombre dĂ©cimal, incluant le siĂšcle, dĂ©terminĂ©e par tm_year . L’indicateur de conversion %EY correspond Ă  la reprĂ©sentation alternative complĂšte d’une annĂ©e.

%z

Le fuseau horaire (c’est-Ă -dire le dĂ©calage en heures et minutes par rapport Ă  UTC) sous forme numĂ©rique +hhmm ou -hhmm (SU).

%Z

Le nom ou l’abrĂ©viation du fuseau horaire.

%+

La date et l’heure au format date (1), non pris en charge par la glibc2 (TZ).

%%

Un caractÚre « % ».

Certaines spĂ©cifications de conversion peuvent ĂȘtre modifiĂ©es en faisant prĂ©cĂ©der le caractĂšre spĂ©cificateur de conversion 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 (SU) mentionnent %Ec , %EC , %Ex , %EX , %Ey , %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Ă©sentation dĂ©pendante de la localisation. Les rĂšgles encadrant la reprĂ©sentation des dates avec l’indicateur E peuvent ĂȘtre obtenues par un appel Ă  nl_langinfo (3) avec ERA pour argument. Un exemple d’une telle forme alternative est le schĂ©ma de calendrier d’ùre japonais dans la locale ja_JP de la glibc.

LA fonction strftime_l () est Ă©quivalente Ă  strftime (), Ă  part qu’elle utilise la localisation locale spĂ©cifiĂ©e Ă  la place de la locale en cours. Le comportement est indĂ©fini si locale n’est pas valable ou est LC_GLOBAL_LOCALE .

VALEUR RENVOYÉE

Si la taille de la chaĂźne de rĂ©sultat ne dĂ©passe pas max octets (octet NULL compris), la fonction strftime () renvoie le nombre d’octets Ă©crits dans le tableau s , sans compter l’octet NULL final. Si la longueur de la chaĂźne dĂ©passe max octets (octet NULL compris), strftime () renvoie 0 et le contenu de la chaĂźne est indĂ©fini.

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. Une chaüne format vide renvoie aussi une chaüne vide.

ENVIRONNEMENT

Les variables d’environnement TZ et LC_TIME sont utilisĂ©es.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3890746-1.png

STANDARDS

strftime ()

C11, POSIX.1-2008.

strftime_l ()

POSIX.1-2008.

HISTORIQUE

strftime ()

SVr4, C89.

strftime_l ()

POSIX.1-2008.

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 %+ 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 date (1) plusieurs extensions applicables Ă©galement Ă  strftime (). La conversion %F est dans C99 et POSIX.1-2001.

Dans SUSv2, le %S 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).

NOTES

Numéros des semaines ISO 8601

%G , %g et %V 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 ( %V ) de l’annĂ©e 2009 ( %G ) ; 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.

Notes de la glibc

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 attribut optionnel et un champ largeur (ceux-ci prĂ©cĂšdent les modificateurs E ou 0 s’ils sont prĂ©sents).

Les caractÚres attributs suivants sont autorisés :

_

(souligné) Compléter une chaßne de résultat numérique avec des espaces.

-

(tiret) Ne pas compléter une chaßne de résultat numérique.

0

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.

^

Convertir une chaßne alphabétique en une chaßne résultante en majuscule.

#

É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 %Z ).

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.

BOGUES

Si la chaĂźne de sortie dĂ©passe max octets, errno n’est pas dĂ©fini. Cela empĂȘche de distinguer ce cas d’erreur des cas oĂč la chaĂźne format aurait lĂ©gitimement produit une chaĂźne de sortie de longueur nulle. POSIX.1-2001 ne spĂ©cifie aucun rĂ©glage de errno pour strftime ().

Certaines versions boguĂ©es de gcc (1) se plaignent de l’utilisation de %c : avertissement : `%c' laisse seulement les 2 derniers chiffres de l’annĂ©e dans certaines configurations linguistiques . Bien sĂ»r, les programmeurs sont encouragĂ©s Ă  utiliser %c , 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 gcc (1). Une relativement propre est d’utiliser une fonction intermĂ©diaire

size_t
my_strftime(char *s, size_t max, const char *fmt,
const struct tm *tm)
{
return strftime(s, max, fmt, tm);
}

De nos jours, gcc (1) fournit une option -Wno-format-y2k pour Ă©viter l’avertissement, et la solution de contournement ci-dessus n’est plus nĂ©cessaire.

EXEMPLES

format de date compatible RFC 2822 (avec des paramÚtres régionaux en anglais pour %a et %b)

"%a, %d %b %Y %T %z"

format de date compatible RFC 822 (avec des paramÚtres régionaux en anglais pour %a et %b)

"%a, %d %b %y %T %z"

Programme exemple

Le programme suivant peut ĂȘtre utilisĂ© pour expĂ©rimenter strftime ().

Voici quelques exemples de la chaĂźne rĂ©sultat produite par l’implĂ©mentation de strftime () dans la glibc :

$ ./a.out '%m'
La chaßne résultat est "11"
$ ./a.out '%5m'
La chaßne résultat est "00011"
$ ./a.out '%_5m'
La chaßne résultat est " 11"

Source du programme

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
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("La chaßne résultat est \"%s\"\n", outstr);
exit(EXIT_SUCCESS);
}

VOIR AUSSI

date (1), time (2), ctime (3), nl_langinfo (3), setlocale (3), sprintf (3), strptime (3)

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>, David Prévot <david@tilapin.org> et Grégoire Scano <gregoire.scano@malloc.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 .