Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       strftime - Formater la date et l'heure

SYNOPSIS

       #include <time.h>

       size_t strftime(char *s, size_t max, const char *format,
                       const struct tm *tm);

DESCRIPTION

       La  fonction strftime() formate les divers champs de la structure tm en
       fonction de la chaine de specification format, puis place  le  resultat
       dans la chaine s de taille max.

       La  specification  de  format  est une chaine terminee par un caractere
       nul, qui peut contenir des sequences de caracteres  speciales  appelees
       sp'ecifications   de  conversion,  chacune  commence  par  un  character
       << % >>, et  se  termine  par  un  autre  caractere,  appele  caract`ere
       sp'ecificateur  de conversion. Toutes les autres sequences de caracteres
       sont des s'equences de caract`eres ordinaires.

       Les caracteres des sequences de caracteres  ordinaires  (y  compris  le
       caractere  nul) sont copies tels quels depuis format dans s. Cependant,
       les caracteres specificateurs de conversion sont remplaces comme suit :

       %a     Le nom  abrege  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 abrege du mois, en fonction de la localisation en cours.

       %B     Le nom complet du mois, en fonction de la localisation en cours.

       %c     La representation classique de la date et de l'heure, suivant la
              localisation en cours.

       %C     Le  siecle  (annee/100)  sous  forme de nombre de deux chiffres.
              (SU)

       %d     Le quantieme du mois sous forme de nombre decimal (entre  01  et
              31).

       %D     Equivalent  a  %m/%d/%y.  Seulement  pour  les  americains.  Ces
              derniers doivent noter que les autres pays preferent  le  format
              %d/%m/%y.  Dans  un contexte international, ce format est ambigu
              et doit etre evite. (SU)

       %e     Comme  %d,  le  quantieme  du  mois  sous  forme  decimal,  mais
              l'eventuel zero en tete est remplace par un espace. (SU)

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

       %F     Equivalent a %Y-%m-%d (format de date ISO 8601). (C99)

       %G     L'annee ISO 8601 basee sur les semaines (voir la section  NOTES)
              sous forme de nombre decimal, avec le siecle. L'annee sur quatre
              chiffres correspondant au numero de la  semaine  ISO  (consultez
              %V).  C'est  le  meme  format  que  %Y, sauf que si le numero de
              semaine appartient  a  l'annee  suivante  ou  precedente,  c'est
              celle-ci qui est affichee a la place. (TZ)

       %g     Comme  %G  sans  le siecle, c'est-a-dire avec une annee sur deux
              chiffres (00-99). (TZ)

       %h     Equivalent a %b. (SU)

       %H     L'heure, sur 24 heures, sous forme de nombre decimal  (entre  00
              et 23).

       %I     L'heure,  sur  12 heures, sous forme de nombre decimal (entre 01
              et 12).

       %j     Le numero du jour dans l'annee (entre 001 et 366).

       %k     L'heure (sur 24 heures) sous forme de nombre decimal (intervalle
              0  a  23).  Les  chiffres uniques sont precedes d'un blanc (voir
              aussi %H). (TZ).

       %l     L'heure (sur 12 heures) sous forme de nombre decimal (intervalle
              1  a  12).  Les  chiffres uniques sont precedes d'un blanc (voir
              aussi %I). (TZ).

       %m     Le numero du mois (entre 01 et 12).

       %M     La minute, sous forme de nombre decimal (00 a 59).

       %n     Un caractere saut-de-ligne. (SU)

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

       %p     L'une  des  deux  chaines  << AM >>  ou  << PM >> en fonction de
              l'heure, ou la traduction de ces  chaines  en  fonctions  de  la
              localisation  en cours. Midi est traite comme << PM >> et minuit
              comme << AM >>.

       %P     Comme %p mais en minuscule: << am >> ou << pm >> ou  une  chaine
              locale equivalente. (GNU)

       %r     L'heure  en  notation  a.m.  ou p.m. Dans la localisation POSIX,
              c'est equivalent a %I:%M:%S %p. (SU)

       %R     L'heure en format  24  heures  (%H:%M).  (SU).  Pour  avoir  les
              secondes consultez %T.

       %s     Le nombre de secondes ecoulees depuis l'epoque, 1er janvier 1970
              a 00:00:00 UTC. (TZ).

       %S     La seconde, sous forme de nombre decimal  (00-60).  L'intervalle
              peut  etre  superieur  a  60  pour  autoriser  des  secondes  de
              rattrapage.

       %t     Un caractere de tabulation. (SU)

       %T     L'heure en notation 24 heures (%H:%M:%S). (SU)

       %u     Le jour de la semaine sous forme decimal,  de  1  (lundi)  a  7.
              Consultez aussi %w. (SU)

       %U     Le  numero  de  la  semaine  dans  l'annee, sous forme de nombre
              decimal (00-53), en commencant le comptage au  premier  dimanche
              de l'annee. Consultez aussi %V et %W.

       %V     Le numero de semaine ISO 8601 (voir la section NOTES) de l'annee
              en cours sous forme de nombre decimal dans  l'intervalle  01-53,
              ou  la  semaine  1  est  la premiere ayant au moins 4 jours dans
              l'annee en cours. Consultez aussi %U et %W. (SU)

       %w     Le numero du jour de la  semaine,  sous  forme  decimale  (0-6),
              dimanche valant 0. Consultez aussi %u.

       %W     Le  numero  de  la  semaine  dans  l'annee, sous forme de nombre
              decimal (00-53), en commencant le comptage au premier  lundi  de
              l'annee.

       %x     La  representation  usuelle  de  la  date, sans l'heure, dans la
              localisation en cours.

       %X     La representation usuelle de l'heure,  sans  la  date,  dans  la
              localisation en cours.

       %y     L'annee,  sous forme de nombre decimal, sans le siecle (entre 00
              et 99).

       %Y     L'annee, sous forme de nombre decimal, incluant le siecle.

       %z     Le fuseau horaire (c'est-a-dire le decalage en heures et minutes
              par rapport a UTC) sous forme numerique +hhmm ou -hhmm. (SU)

       %Z     Le nom ou l'abreviation du fuseau horaire.

       %+     La  date et l'heure au format date(1). (TZ) (Non supporte par la
              glibc2)

       %%     Un caractere << % >>.

       Certaines  specifications  de  conversion  peuvent  etre  modifiees  en
       faisant  preceder  le  caractere  specificateur  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 modifie. Les specifications Single  UNIX  mentionnent  %Ec,
       %EC,  %Ex,  %EX, %Ey, %EY, %Od, %Oe, %OH, %OI, %Om, %OM, %OS, %Ou, %OU,
       %OV, %Ow, %OW, %Oy, ou l'action du modificateur  O  est  d'utiliser  un
       autre  format numerique (par exemple des chiffres romains), et l'action
       de E est d'utiliser une representation dependant de la localisation.

       Les champs de la structure tm sont  definis  dans  <time.h>.  Consultez
       aussi ctime(3).

VALEUR RENVOY'EE

       La  fonction  strftime() renvoie le nombre de caracteres ecrits dans le
       tableau s, sans compter l'octet nul final.  Si  la  chaine  etait  trop
       courte,  strftime()  renvoie 0, et le contenu de la chaine est indefini
       (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 max si
       la chaine etait trop courte).

       Remarquez qu'une valeur de retour  nulle  n'indique  pas  toujours  une
       erreur.  Dans  de nombreuses localisations, par exemple, %p renvoie une
       chaine vide.

ENVIRONNEMENT

       Les variables d'environnement TZ et LC_TIME sont utilisees.

CONFORMIT'E

       SVr4, C89, C99. Il  y  a  une  inclusion  stricte  entre  les  jeux  de
       conversions fournies par C ANSI (sans marque), celles indiquees par les
       Specifications Single UNIX (marquees SU), celles fournies par le paquet
       timezone  d'Olson  (marquees TZ), et celles de la glibc (marquees GNU),
       sauf pour %+ qui n'est pas supporte par glibc2. D'un autre cote  glibc2
       offre  plusieurs  extensions.  POSIX.1  ne traite que les conversions C
       ANSI.  POSIX.2  decrit  a  propos  de  date(1)   plusieurs   extensions
       applicables  egalement  a  strftime(). La conversion %F est dans C99 et
       POSIX.1-2001.

       Dans SUSv2, le %S specifie permettait un intervalle de 00  a  61,  pour
       autoriser  la  possibilite  theorique  d'une minute incluant une double
       seconde de rattrapage (il n'y a jamais eu de telle minute).

NOTES

   Num'eros des semaines ISO 8601
       %G, %g et %V produisent des valeurs calculees sur la base des  semaines
       de  l'annee  definies  par  la  norme  ISO 8601.  Dans  ce systeme, les
       semaines demarrent le lundi et sont numerotees de 01, pour la  premiere
       semaine,  jusqu'a  52 ou 53, pour la derniere semaine. La semaine 1 est
       la premiere semaine pour laquelle  au  moins  quatre  jours  sont  dans
       l'annee  (ce  qui revient au meme que de la definir comme la semaine du
       premier jeudi de l'annee ou la  semaine  du  4  janvier).  Quand  trois
       jours,  ou moins, se trouvent dans la premiere semaine calendaire de la
       nouvelle annee se trouvent  dans  cette  annee,  alors  le  systeme  de
       numerotation des semaines de l'ISO 8601 place ces jours dans la semaine
       53 de l'annee precedente. Par exemple,  le  1er  janvier  2010  est  un
       vendredi,  ce  qui  signifie  que seulement 3 jours se trouvent dans la
       semaine calendaire du debut 2010. l'ISO 8601 considere donc  ces  jours
       comme  faisant  partie  de la semaine 53 (%V) de l'annee 2009 (%G) ; la
       semaine 01 de l'annee 2010 pour l'ISO 8601 demarre le lundi  4  janvier
       2010.

   Notes sur la glibc
       La  glibc  fournit des extensions pour les specifications de conversion
       (ces extensions ne sont pas specifiees par POSIX.1-2001  mais  quelques
       autres  systemes  fournissent des fonctionnalites similaires). Entre le
       caractere << % >> et le caractere specificateur de conversion, on  peut
       specifier  un attribut optionnel et un champ largeur (ceux-ci precedent
       les modificateurs E ou 0 s'ils sont presents).

       Les caracteres attributs suivants sont autorises :

       _      (souligne) Completer une chaine de resultat numerique  avec  des
              espaces.

       -      (tiret) Ne pas completer une chaine de resultat numerique.

       0      Completer  une  chaine de resultat numerique avec des zeros meme
              si le caractere specificateur de conversion utilise des  espaces
              par defaut.

       ^      Convertir  une  chaine  alphabetique en une chaine resultante en
              majuscule.

       #      Echanger la  casse  de  la  chaine  resultat  (cet  attribut  ne
              fonctionne   qu'avec   certains   caracteres  specificateurs  de
              conversion, et parmi ceux-ci, il n'est  vraiment  utile  qu'avec
              %Z).

       Un   specificateur   de   largeur   decimal   optionnel   peut   suivre
       l'(eventuellement absent) attribut. Si la taille naturelle du champ est
       plus  petite que cette largeur, la chaine resultat sera alors completee
       (sur la gauche) jusqu'a la largeur specifiee.

BOGUES

       Certaines versions boguees de gcc se plaignent de l'utilisation de %c :
       warning:  `%c'  yields  only  last  2  digits  of  year in some locales
       (Attention : ne donne que les deux derniers chiffres  de  l'annee  dans
       certaines  localisations). Bien sur, les programmeurs sont encourages a
       utiliser %c, cela donne la representation preferee de date et  d'heure.
       Il y a eu des tas d'astuces bizarres pour eviter ce probleme de gcc(1).
       Une relativement propre est d'utiliser une fonction intermediaire :

           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  eviter
       l'avertissement,  et  la solution de contournement ci-dessus n'est plus
       necessaire.

EXEMPLES

       format de date compatible RFC 2822 (avec des  parametres  regionaux  en
       anglais pour %a et %b)

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

       format  de  date  compatible  RFC 822 (avec des parametres regionaux en
       anglais pour %a et %b)

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

   Programme exemple
       Le programme suivant peut etre utilise pour experimenter strftime().

       Voici  quelques  exemples  de   la   chaine   resultat   produite   par
       l'implementation glibc de strftime() :

           $ ./a.out '%m'
           La chaine resultat est "11"
           $ ./a.out '%5m'
           La chaine resultat est "00011"
           $ ./a.out '%_5m'
           La chaine resultat est "   11"

       Voici le source du programme :

       #include <time.h>
       #include <stdio.h>
       #include <stdlib.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 renvoye 0");
               exit(EXIT_FAILURE);
           }

           printf("Result string is \"%s\"\n", outstr);
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

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

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.32 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone       au       sein        du        projet        perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/> (1996-2003),
       Alain  Portal  <URL:http://manpagesfr.free.fr/>  (2003-2006).   Nicolas
       Francois et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez   signaler   toute   erreur   de   traduction  en  ecrivant  a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.