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
       chaîne de spécification format, puis place le résultat dans la chaîne s de taille max.

       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  spécifications de conversion, chacune
       commence par un character « % », et se termine 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 le  caractère  nul)  sont
       copiés  tels  quels  depuis  format  dans  s.  Cependant, les caractères spécificateurs de
       conversion sont remplacés comme suit :

       %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     Équivalent  à  %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)

       %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. 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 sans le siècle, c'est-à-dire avec une année  sur  deux  chiffres  (00-99).
              (TZ)

       %h     Équivalent à %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 consultez %T.

       %s     Le  nombre  de  secondes écoulées depuis l'époque, 1er janvier 1970 à 00:00:00 UTC.
              (TZ).

       %S     La seconde, sous forme de nombre décimal (00-60). L'intervalle peut être  supérieur
              à 60 pour autoriser des secondes de rattrapage.

       %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écimal, de 1 (lundi) à 7. Consultez 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. 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 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 %U et %W. (SU)

       %w     Le  numéro  du  jour  de  la semaine, sous forme décimale (0-6), dimanche valant 0.
              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 le comptage au premier lundi de l'année.

       %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 (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). (TZ) (Non supporté par la glibc2)

       %%     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 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épendant  de  la
       localisation.

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

VALEUR RENVOYÉE

       La  fonction  strftime()  renvoie  le  nombre de caractères écrits dans le tableau s, sans
       compter l'octet nul final. Si la chaîne était trop courte, strftime()  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  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.

ENVIRONNEMENT

       Les variables d'environnement TZ et LC_TIME sont utilisées.

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  %+ 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  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 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.

   Notes sur 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

       Certaines versions boguées 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'année dans certaines localisations).  Bien  sûr,  les  programmeurs
       sont  encouragés  à utiliser %c, 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 glibc de
       strftime() :

           $ ./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"

       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 renvoyé 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 être trouvées à
       l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <URL:http://po4a.alioth.debian.org/>  par  l'équipe  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 François et l'équipe francophone de
       traduction de Debian (2006-2009).

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

       Vous pouvez toujours avoir accès à la version anglaise de  ce  document  en  utilisant  la
       commande « man -L C <section> <page_de_man> ».