Provided by: manpages-fr-dev_3.65d1p1-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.

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

           struct tm
           {
               int tm_sec;    /* secondes [0,60]                          */
               int tm_min;    /* minutes [0,59]                           */
               int tm_hour;   /* heures [0,23]                            */
               int tm_mday;   /* jour du mois [1,31]                      */
               int tm_mon;    /* mois [0,11]                              */
               int tm_year;   /* année - 1900                             */
               int tm_wday;   /* jour de la semaine [0,6] où Dimanche = 0 */
               int tm_yday;   /* jour de l'année [0,365] où 1er Jan = 0   */
               int tm_isdst;  /* décalage été/hiver                       */
           };

       Pour plus de détails sur la structure tm, consultez ctime(3).

       Le  paramètre  format  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 le
       nom d’un jour de la semaine ou d’un 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    Le 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égionaux.

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.65 du projet man-pages Linux. Une description du projet et des
       instructions    pour    signaler    des    anomalies    peuvent     être     trouvées     à     l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

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

       Christophe      Blaess      <http://www.blaess.fr/christophe/>      (1996-2003),       Alain       Portal
       <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> ».