Provided by: manpages-fr-dev_4.18.1-1_all bug

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).

       The  format  specification  is  a null-terminated string and may contain special character
       sequences called conversion specifications, each of which is introduced by a '%' character
       and  terminated  by  some  other  character known as a conversion specifier character. All
       other character sequences are ordinary character sequences.

       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     The  abbreviated  name  of  the  day  of  the week according to the current locale.
              (Calculated from tm_wday.) (The specific names used in the current  locale  can  be
              obtained by calling nl_langinfo(3)  with ABDAY_{17} as an argument.)

       %A     The  full  name of the day of the week according to the current locale. (Calculated
              from tm_wday.) (The specific names used in the current locale can  be  obtained  by
              calling nl_langinfo(3)  with DAY_{17} as an argument.)

       %b     The  abbreviated  month  name  according  to  the  current locale. (Calculated from
              tm_mon.) (The specific names used in the current locale can be obtained by  calling
              nl_langinfo(3)  with ABMON_{112} as an argument.)

       %B     The full month name according to the current locale. (Calculated from tm_mon.) (The
              specific names used in the current locale can be obtained by calling nl_langinfo(3)
              with MON_{112} as an 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     Equivalent  to  %m/%d/%y.  (Yecch—for Americans only. Americans should note that in
              other countries %d/%m/%y is rather common. This means that in international context
              this format is ambiguous and should not be used.) (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     Like %G,  but  without  century,  that  is,  with  a  2-digit  year  (00–99).  (TZ)
              (Calculated from tm_year, tm_yday, and tm_wday.)

       %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 06,
              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  (0053),  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).

       %%     A literal '%' character.

       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 example d'une telle
       forme alternative est le schéma de calendrier d'ère japonais dans la locale  ja_JP  de  la
       glibc.

       strftime_l()   is equivalent to strftime(), except it uses the specified locale instead of
       the current locale. The behaviour is undefined if locale is invalid or 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).

       ┌─────────────────────────────────────────────┬──────────────────────┬────────────────────┐
       │InterfaceAttributValeur             │
       ├─────────────────────────────────────────────┼──────────────────────┼────────────────────┤
       │strftime(), strftime_l()                     │ Sécurité des threads │ MT-Safe env locale │
       └─────────────────────────────────────────────┴──────────────────────┴────────────────────┘

STANDARDS

       strftime(): SVr4, C99.
       strftime_l(): POSIX.1-2008.

       There  are  strict  inclusions  between the set of conversions given in ANSI C (unmarked),
       those given in the Single UNIX Specification (marked SU), those given in Olson's  timezone
       package  (marked  TZ),  and  those  given  in  glibc  (marked  GNU), except that %+ is not
       supported in glibc2. On the other hand glibc2 has several more  extensions.  POSIX.1  only
       refers  to ANSI C; POSIX.2 describes under date(1)  several extensions that could apply to
       strftime()  as well. The %F conversion is in C99 and 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
       glibc  provides  some  extensions for conversion specifications. (These extensions are not
       specified in POSIX.1-2001, but a few other systems provide similar features.) Between  the
       '%' character and the conversion specifier character, an optional flag and field width may
       be specified. (These precede the E or O modifiers, if present.)

       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().

       Some buggy versions of gcc(1)  complain about the use of %c:  warning:  `%c'  yields  only
       last  2 digits of year in some locales. Of course programmers are encouraged to use %c, as
       it gives the preferred date and time  representation.  One  meets  all  kinds  of  strange
       obfuscations  to  circumvent  this  gcc(1)   problem.  A relatively clean one is to add an
       intermediate function

           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

       RFC 2822-compliant date format (with an English locale for %a and %b)

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

       RFC 822-compliant date format (with an English locale for %a and %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'
           Result string is "11"
           $ ./a.out '%5m'
           Result string is "00011"
           $ ./a.out '%_5m'
           Result string is "   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("Result string is \"%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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.