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

NOM

       strptime - Conversion d'une chaîne de date en une structure tm

SYNOPSIS

       #define _XOPEN_SOURCE /* Consultez feature_test_macros(7) */
       #include <time.h>

       char *strptime(const char *buf, const char *format, struct tm *tm);

DESCRIPTION

       La  fonction  strptime()  est complémentaire de la fonction strftime(3). Elle convertit la
       chaîne de caractères pointée par buf en une valeur qui est stockée dans  la  structure  tm
       pointée  par  l'argument  tm,  la  conversion  étant  réalisée  en suivant les indications
       contenues dans la chaîne format. Cette dernière contient des descripteurs de champs et  du
       texte, rappelant scanf(3). Chaque descripteur consiste en un caractère % suivi d'un second
       caractère indiquant le champ à interpréter. Tous  les  autres  sont  considérés  comme  du
       texte,  qui  doit être présent dans la chaîne fournie en entrée. Toutefois un espace blanc
       se trouvant dans la chaîne de  format  peut  être  mis  en  correspondance  avec  zéro  ou
       plusieurs  espaces.  Il  devrait  toujours  y  avoir  un  espace  ou  un  autre  caractère
       alphanumérique entre deux descripteurs de champs.

       La fonction strptime() traite la chaîne d'entrée de  gauche  à  droite.  Les  trois  types
       d'éléments d'entrée possibles (espace, caractère littéral, conversion) sont manipulés l'un
       après l'autre. Si l'entrée ne peut pas être mise  en  correspondance  avec  la  chaîne  de
       format,  la  fonction  s'arrête.  Le  reste du format et de la chaîne d'entrée ne sont pas
       traités.

       Les descripteurs applicables  sont  décrits  ci-dessous.  Dans  le  cas  d'une  chaîne  de
       caractères  (comme  un  nom  de  jour  ou de mois), la comparaison ne tient pas compte des
       majuscules/minuscules. Dans le cas d'un nombre, les zéros au début sont autorisés mais pas
       obligatoires.

       %%     Le caractère %

       %a ou %A
              Le  jour  de la semaine en utilisant les noms correspondants à la localisation. Les
              noms abrégés ou entiers peuvent être utilisés.

       %b ou %B ou %h
              Le mois en utilisant les noms correspondants à la localisation. Les noms abrégés ou
              entiers peuvent être utilisés.

       %c     La date et l'heure en utilisant le format de la localisation.

       %C     Le numéro de siècle (0-99).

       %d ou %e
              Le jour du mois (1-31)

       %D     La date, ainsi : %m/%d/%y. C'est la date au format américain, très gênante pour les
              autres pays, notamment l'Europe  qui  utilise  une  notation  %d/%m/%y.  Le  format
              standard ISO 8601 est %Y-%m-%d.

       %H     L'heure (0-23)

       %I     L'heure (0-12)

       %j     Le numéro du jour dans l'année (001-366)

       %m     Le numéro du mois (1-12)

       %M     La minute (0-59)

       %n     Un espace blanc quelconque

       %p     Équivalent local de AM ou PM (éventuellement rien).

       %r     L'heure  sur  12  heures  avec l'équivalent local de AM ou PM. Dans la localisation
              POSIX, équivalent à %I:%M:%S %p. Si le champ t_fmt_ampm de la catégorie LC_TIME  de
              la localisation est vide, le comportement est indéfini.

       %R     Équivalent de %H:%M.

       %S     Les secondes (0-61, des secondes de rattrapages sont autorisées)

       %t     Un espace blanc quelconque

       %T     Équivalent de %H:%M:%S.

       %U     Le  numéro  de semaine (0-53), le premier dimanche de janvier étant le premier jour
              de la semaine 1.

       %w     Le numéro du jour dans la semaine (0-6), en commençant le dimanche.

       %W     Le numéro de semaine (0-53), le premier lundi de janvier étant le premier  jour  de
              la semaine 1.

       %x     la date, en utilisant le format usuel de la localisation.

       %X     l'heure, en utilisant le format usuel de la localisation.

       %y     l'année  sans  le  siècle  (0-99;  les  zéros  au  début  sont  autorisés  mais pas
              obligatoires). Lorsque le siècle n'est pas indiqué par une  autre  conversion,  les
              années  69  à 99 sont considérées comme étant du vingtième siècle (1969 à 1999), et
              les années 00-68 du vingt-et-unième siècle (2000-2068).

       %Y     L'année en incluant le siècle (par exemple, 1996)

       Certains descripteurs peuvent être complétés par les  caractères  modificateurs  E  et  O,
       indiquant  qu'il  faut  employer  un autre format ou une autre spécification. Si cet autre
       format, ou cette autre conversion n'est pas disponible dans la localisation en  cours,  le
       descripteur n'est pas modifié.

       Le modificateur E indique que la chaîne d'entrée peut contenir des versions différentes de
       la date et l'heure, en fonction de la localisation :

       %Ec    Une représentation différente de la date et l'heure.

       %EC    Le nom de l'année de base (période) dans la représentation locale alternative.

       %Ex    Une autre représentation de la date.

       %EX    Une autre représentation de l'heure.

       %Ey    Le décalage (en année) par rapport à l'année  %EC  dans  la  représentation  locale
              alternative.

       %EY    La représentation complète de l'année.

       Le  modificateur  O  indique  que  les  saisies numériques peuvent être effectuées dans un
       format différent, dépendant de la localisation.

       %Od or %Oe
              Le jour du mois. Les zéros en tête sont permis mais pas obligatoires.

       %OH    L'heure (sur 24 heures).

       %OI    L'heure (sur 12 heures).

       %Om    Le numéro du mois.

       %OM    Les minutes.

       %OS    Les secondes.

       %OU    Le numéro de la semaine.

       %Ow    Numéro du jour dans la semaine, le dimanche étant zéro.

       %OW    Le numéro du jour de la semaine, en commençant le lundi.

       %Oy    L'année (ou décalage  par  rapport  à  %C)  en  utilisant  les  symboles  numérique
              régiaunaux.

       Les champs de la structure tm définie dans <time.h> sont :

           struct tm
           {
               int tm_sec;        /* secondes           */
               int tm_min;        /* minutes            */
               int tm_hour;       /* heures             */
               int tm_mday;       /* jour du mois       */
               int tm_mon;        /* mois               */
               int tm_year;       /* année              */
               int tm_wday;       /* jour de la semaine */
               int tm_yday;       /* jour de l'année    */
               int tm_isdst;      /* décalage été/hiver */
           };

VALEUR RENVOYÉE

       La  fonction  strptime()  renvoie  un  pointeur  sur le premier caractère de la chaîne buf
       n'ayant pas été traité. Dans le cas où la chaîne de saisie est  plus  longue  que  ce  que
       réclame  le  format,  la  valeur renvoyée pointe juste après le dernier caractère d'entrée
       ayant été analysé. Si toute la chaîne a  été  traitée,  le  pointeur  est  dirigé  sur  le
       caractère  NUL  en  fin  de  chaîne.  Si  strptime()  n'arrive  pas à effectuer toutes les
       conversions, il renvoie NULL.

CONFORMITÉ

       SUSv2, POSIX.1-2001.

NOTES

       En principe cette fonction n'initialise pas tm, mais n'y stocke que les valeurs lues. Ceci
       signifie  que  le  contenu de tm doit être initialisé avant l'appel. Les détails diffèrent
       suivant les systèmes UNIX. L'implémentation de la bibliothèque C Gnu ne  modifie  pas  les
       champs  non  mentionnés  explicitement, sauf tm_wday, et tm_yday qui sont recalculés si un
       champ d'année, de mois ou de jour est modifié.

       Cette fonction n'est disponible que dans les versions de bibliothèque depuis la 4.6.8. Les
       bibliothèques  Linux libc4 et libc5 incluaient toujours le prototype de cette fonction, la
       bibliothèque glibc 2 ne fournit le  prototype  que  si  les  constantes  _XOPEN_SOURCE  ou
       _GNU_SOURCE sont définies.

       Avant  la  libc  5.4.13,  les  espaces  (et  les conversions « n » et « t ») n'étaient pas
       gérés ; les caractères de modification locale E  et  O  n'étaient  pas  acceptés ;  et  la
       spécification « C » était un synonyme pour « c ».

       La  conversion  « y »  (année dans le siècle) est toujours considérée comme appartenant au
       vingtième siècle dans les libc4 et libc5. Elle est prise dans l'intervalle  1950-2049  par
       la glibc 2.0, et 1969-2068 par la glibc 2.1.

   Notes sur la glibc
       Pour  des  raisons  de  symétrie,  la  glibc  essaye  d'offrir  pour  strptime() les mêmes
       caractères de formatage que ceux de strftime(3) (dans la plupart des cas, les champs  sont
       lus mais aucun membre de tm n'est modifié). Ceci conduit à :

       %F     Équivalent à %Y-%m-%d, le format ISO 8601 pour la date.

       %g     L'année correspondant au numéro de semaine ISO, sans le siècle (0-99).

       %G     L'année correspondant au numéro de semaine ISO (par exemple 1991).

       %u     Le numéro du jour de la semaine (1-7, lundi valant 1).

       %V     Le  numéro  de  semaine  ISO  8601:1988  (1-53).  Si  la semaine (commençant lundi)
              contenant le 1er janvier a quatre jours ou plus de  la  nouvelle  année,  elle  est
              comptée  en  semaine 1. Sinon elle est considérée comme dernière semaine de l'année
              précédente, et c'est la suivante qui est la semaine 1.

       %z     Spécification standard RFC-822/ISO 8601 pour le fuseau horaire.

       %Z     Le nom du fuseau horaire.

       De même, à cause des extensions GNU de strftime(3), %k est accepté en synonyme de  %H,  et
       %l est accepté comme synonyme de %I, et %P en synonyme de %p. Enfin,

       %s     Le  nombre  de  secondes  depuis  l'époque,  1er janvier 1970 à 00:00:00 (UTC). Les
              secondes de rattrapage ne sont pas comptées, sauf  si  un  support  spécifique  est
              disponible.

       L'implémentation  de  la  glibc  n'impose  pas la présence de caractères blancs entre deux
       descripteurs de champs.

EXEMPLE

       L'exemple suivant montre l'utilisation de strptime() et strftime(3).

       #define _XOPEN_SOURCE
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>
       #include <time.h>

       int
       main(void)
       {
           struct tm tm;
           char buf[255];

           memset(&tm, 0, sizeof(struct tm));
           strptime("2001-11-12 18:31:01", "%Y-%m-%d %H:%M:%S", &tm);
           strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm);
           puts(buf);
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       time(2), getdate(3), scanf(3), setlocale(3), strftime(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> ».