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 |
The century number (0–99). |
%d ou %e
The day of month (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 |
The hour (0–23). | ||
%I |
The hour on a 12-hour clock (1–12). | ||
%j |
The day number in the year (1–366). | ||
%m |
The month number (1–12). | ||
%M |
The 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 |
The second (0–60; 60 may occur for leap seconds; earlier also 61 was allowed). | ||
%t |
Un espace blanc quelconque | ||
%T |
Équivalent de %H:%M:%S. | ||
%U |
The week number with Sunday the first day of the week (0–53). The first Sunday of January is the first day of week 1. | ||
%w |
The ordinal number of the day of the week (0–6), with Sunday = 0. | ||
%W |
The week number with Monday the first day of the week (0–53). The first Monday of January is the first day of week 1. | ||
%x |
la date, en utilisant le format usuel de la localisation. | ||
%X |
l’heure, en utilisant le format usuel de la localisation. | ||
%y |
The year within century (0–99). When a century is not otherwise specified, values in the range 69–99 refer to years in the twentieth century (1969–1999); values in the range 00–68 refer to years in the twenty-first century (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.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes(7).
CONFORMITÉ
POSIX.1-2001, POSIX.1-2008, SUSv2.
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é.
The 'y' (year in century) specification is taken to specify a year in the range 1950–2049 by glibc 2.0. It is taken to be a year in 1969–2068 since glibc 2.1.
Notes de 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 |
The year corresponding to the ISO week number, but without the century (0–99). | ||
%G |
L’année correspondant au numéro de semaine ISO (par exemple 1991). | ||
%u |
The day of the week as a decimal number (1–7, where Monday = 1). | ||
%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 |
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.
EXEMPLES
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 5.07 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page, peuvent être trouvées à l’adresse https://www.kernel.org/doc/man-pages/.
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 [AT] laposte.net>, Thierry Vignaud <tvignaud [AT] mandriva.com>, François Micaux, Alain Portal <aportal [AT] univ-montp2.fr>, Jean-Philippe Guérard <fevrier [AT] tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon [AT] wanadoo.fr>, Julien Cristau <jcristau [AT] debian.org>, Thomas Huriaux <thomas.huriaux [AT] gmail.com>, Nicolas François <nicolas.francois [AT] centraliens.net>, Florentin Duneau <fduneau [AT] gmail.com>, Simon Paillard <simon.paillard [AT] resel.fr>, Denis Barbier <barbier [AT] debian.org> et David Prévot <david [AT] tilapin.org>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 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 [AT] lists.org>.