strptime(3) Library Functions Manual strptime(3) NOM strptime - Conversion d'une chaine de dates en une structure tm BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #define _XOPEN_SOURCE /* Consultez feature_test_macros(7) */ #include char *strptime(const char *restrict s, const char *restrict format, struct tm *restrict tm); DESCRIPTION La fonction strptime() est l'inverse de la fonction strftime(3). Elle convertit la chaine de caracteres pointee par s en une valeur qui est stockee dans la structure tm (<< representation humaine >>) pointee par l'argument tm, la conversion etant realisee en suivant les indications contenues dans la chaine format. La structure de temps tm est decrite dans tm(type3). Le parametre format contient des descripteurs de champ et du texte, rappelant scanf(3). Chaque descripteur consiste en un caractere % suivi d'un second caractere indiquant la substitution pour le descripteur de champ. Tous les autres sont consideres comme du texte, qui doit etre present dans la chaine fournie en entree. Toutefois un espace blanc se trouvant dans la chaine de format peut etre mis en correspondance avec zero ou plusieurs espaces. Il devrait toujours y avoir un espace ou un autre caractere alphanumerique entre deux descripteurs de champ. The strptime() function processes the input string from left to right. Each of the three possible input elements (whitespace, literal, or format) is handled one after the other. If the input cannot be matched to the format string, the function stops. The remainder of the format and input strings are not processed. Les descripteurs applicables sont decrits ci-dessous. Dans le cas d'une chaine de caracteres (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 zeros au debut sont autorises mais pas obligatoires. %% Le caractere % %a ou %A Le jour de la semaine en utilisant les noms correspondants a la localisation. Les noms abreges ou entiers peuvent etre utilises. %b ou %B ou %h Le mois en utilisant les noms correspondants a la localisation. Les noms abreges ou entiers peuvent etre utilises. %c La date et l'heure en utilisant le format de la localisation. %C Le numero de siecle [0,99]. %d ou %e Le jour du mois [1,31] %D La date, ainsi : %m/%d/%y. C'est la date au format americain, tres genante dans les autres pays, notamment en Europe ou la notation %d/%m/%y est plus souvent utilisee. Le format standard ISO 8601 est %Y-%m-%d. %H L'heure [0,23]. %I L'heure sur 12 heures [1,12]. %j Le numero du jour dans l'annee [1,366]. %m Le numero du mois [1,12]. %M La minute [0,59]. %n Un espace blanc quelconque %p Equivalent local de AM ou PM (eventuellement rien). %r L'heure sur 12 heures avec l'equivalent local de AM ou PM. Dans la localisation POSIX, equivalent a %I:%M:%S %p. Si le champ t_fmt_ampm de la categorie LC_TIME de la localisation est vide, le comportement est indefini. %R Equivalent de %H:%M. %S Les secondes [0,60], 60 peut etre utilise pour les secondes de rattrapage ; 61 etait possible anterieurement. %t Un espace blanc quelconque %T Equivalent de %H:%M:%S. %U Le numero de la semaine [0,53] avec dimanche pour premier jour de la semaine. Le premier dimanche de janvier est le premier jour de la semaine 1. %w Le numero du jour dans la semaine [0,6], 0 correspondant au dimanche. %W Le numero de la semaine [0,53] avec lundi pour premier jour de la semaine. Le premier lundi de janvier est 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'annee dans le siecle [0,99]. Lorsque le siecle n'est pas indique par une autre conversion, les annees 69 a 99 sont considerees comme etant du vingtieme siecle (1969 a 1999), et les annees 00 a 68 du vingt-et-unieme siecle (2000-2068). %Y L'annee en incluant le siecle (par exemple, 1996) Certains descripteurs peuvent etre completes par les caracteres modificateurs E et O, indiquant qu'il faut employer un autre format ou une autre specification. Si cet autre format ou cette autre conversion n'est pas disponible dans la localisation en cours, le descripteur n'est pas modifie. Le modificateur E indique que la chaine d'entree peut contenir des versions differentes de la date et de l'heure, en fonction de la localisation : %Ec Une representation differente de la date et de l'heure. %EC Le nom de l'annee de base (periode) dans la representation locale alternative. %Ex Une autre representation de la date. %EX Une autre representation de l'heure. %Ey Le decalage (en annee) par rapport a l'annee %EC dans la representation locale alternative. %EY La representation alternative complete de l'annee. Le modificateur O indique que les saisies numeriques peuvent etre effectuees dans un format different, dependant de la localisation. %Od or %Oe Le jour du mois en utilisant les symboles numeriques alternatifs. Les zeros en tete sont permis mais pas obligatoires. %OH L'heure, sur 24 heures, utilisant les symboles numeriques alternatifs. %OI L'heure, sur 12 heures, utilisant les symboles numeriques alternatifs. %Om Le numero du mois en utilisant les symboles numeriques alternatifs. %OM Les minutes en utilisant les symboles numeriques alternatifs. %OS Les secondes en utilisant les symboles numeriques alternatifs.. %OU Le numero de la semaine en utilisant les symboles numeriques alternatifs. Dimanche premier jour de la semaine. %Ow Le numero du jour dans la semaine en utilisant les symboles numeriques alternatifs, le dimanche etant zero. %OW Le numero du jour de la semaine en utilisant les symboles numeriques alternatifs, en commencant le lundi. %Oy L'annee (ou decalage par rapport a %C) en utilisant les symboles numeriques regionaux alternatifs. VALEUR RENVOYEE La fonction strptime() renvoie un pointeur sur le premier caractere de la chaine s n'ayant pas ete traite. Dans le cas ou la chaine de saisie est plus longue que ce que reclame le format, la valeur renvoyee pointe juste apres le dernier caractere d'entree ayant ete analyse. Si toute la chaine a ete traitee, le pointeur est dirige sur l'octet NULL en fin de chaine. Si strptime() n'arrive pas a effectuer toutes les conversions, elle renvoie NULL. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +----------------------+--------------------------+--------------------+ |Interface | Attribut | Valeur | +----------------------+--------------------------+--------------------+ |strptime() | Securite des threads | MT-Safe env locale | +----------------------+--------------------------+--------------------+ NORMES POSIX.1-2008. HISTORIQUE POSIX.1-2001, SUSv2. NOTES In principle, this function does not initialize tm but stores only the values specified. This means that tm should be initialized before the call. Details differ a bit between different UNIX systems. The glibc implementation does not touch those fields which are not explicitly specified, except that it recomputes the tm_wday and tm_yday fields if any of the year, month, or day elements changed. La conversion << y >> (annee dans le siecle) est toujours consideree comme appartenant a l'intervalle [1950,2049] par la glibc 2.0, et [1969,2068] par la glibc 2.1. Notes de la glibc For reasons of symmetry, glibc tries to support for strptime() the same format characters as for strftime(3). (In most cases, the corresponding fields are parsed, but no field in tm is changed.) This leads to: %F Equivalent a %Y-%m-%d, le format ISO 8601 pour la date. %g L'annee correspondant au numero de semaine ISO, sans le siecle [0,99]. %G L'annee correspondant au numero de semaine ISO (par exemple 1991). %u Le numero du jour de la semaine [1,7], 1 correspondant au lundi. %V Le numero de semaine ISO 8601:1988 [1,53]. Si la semaine (commencant lundi) contenant le 1er janvier a quatre jours ou plus de la nouvelle annee, elle est comptee en semaine 1. Sinon elle est consideree comme derniere semaine de l'annee precedente, et c'est la suivante qui est la semaine 1. %z Specification standard RFC-822/ISO 8601 pour le fuseau horaire. %Z Le nom du fuseau horaire. Similarly, because of GNU extensions to strftime(3), %k is accepted as a synonym for %H, and %l should be accepted as a synonym for %I, and %P is accepted as a synonym for %p. Finally: %s Le nombre de secondes depuis l'epoque, 1er janvier 1970 a 00:00:00 (UTC). Les secondes de rattrapage ne sont pas comptees, sauf si une prise en charge specifique est disponible. L'implementation de la glibc n'impose pas la presence de caracteres blancs entre deux descripteurs de champs. EXEMPLES L'exemple suivant montre l'utilisation de strptime() et strftime(3). #define _XOPEN_SOURCE #include #include #include #include int main(void) { struct tm tm; char buf[255]; memset(&tm, 0, sizeof(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) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Gregoire Scano Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.18 6 avril 2026 strptime(3)