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. La fonction strptime() traite la chaine d'entree de gauche a droite. Les trois types d'elements d'entree possibles (espace, caractere litteral, format) sont manipules l'un apres l'autre. Si l'entree ne peut pas etre mise en correspondance avec la chaine de format, la fonction s'arrete. Le reste du format et de la chaine d'entree ne sont pas traites. 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 Equivalent to %m/%d/%y. (This is the American style date, very confusing to non-Americans, especially since %d/%m/%y is widely used in Europe. The ISO 8601 standard format is %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 | +----------------------+--------------------------+--------------------+ STANDARDS POSIX.1-2008. HISTORIQUE POSIX.1-2001, SUSv2. NOTES En principe cette fonction n'initialise pas tm, mais n'y stocke que les valeurs lues. Cela signifie que le contenu de tm doit etre initialise avant l'appel. Les details different suivant les systemes UNIX. L'implementation de la bibliotheque glibc ne modifie pas les champs non mentionnes explicitement, sauf tm_wday, et tm_yday qui sont recalcules si un champ d'annee, de mois ou de jour est modifie. 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 Pour des raisons de symetrie, la glibc essaye d'offrir pour strptime() les memes caracteres de formatage que ceux de strftime(3) (dans la plupart des cas, les champs sont lus mais aucun membre de tm n'est modifie). Ceci conduit a : %F Equivalent to %Y-%m-%d, the ISO 8601 date format. %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 The ISO 8601:1988 week number as a decimal number (1-53). If the week (starting on Monday) containing 1 January has four or more days in the new year, then it is considered week 1. Otherwise, it is the last week of the previous year, and the next week is week 1. %z An RFC-822/ISO 8601 standard timezone specification. %Z Le nom du fuseau horaire. De meme, a cause des extensions GNU de strftime(3), %k est accepte en synonyme de %H, et %l est accepte comme synonyme de %I, et %P en synonyme de %p. Enfin, %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.06 28 janvier 2024 strptime(3)