strptime
Table des matières
Retour à l'index
NOM
strptime - Conversion d'une chaîne de dates en une structure tm
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#define _XOPEN_SOURCE /* Consultez feature_test_macros(7) */
#include <time.h>
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 chaîne de caractères pointée par s en une valeur qui est
stockée dans la structure tm (« représentation humaine ») pointée par
l'argument tm, la conversion étant réalisée en suivant les indications
contenues dans la chaîne format.
La structure de temps tm est décrite dans tm(type3).
Le paramètre format contient des descripteurs de champ et du texte,
rappelant scanf(3). Chaque descripteur consiste en un caractère %
suivi d'un second caractère indiquant la substitution pour le descripteur de
champ. 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 champ.
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,
format) 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 dans les autres pays, notamment en Europe où la notation %d/%m/%y
est plus souvent utilisée. Le format standard ISO 8601 est %Y-%m-%d.
- %H
-
L'heure [0,23].
- %I
-
L'heure sur 12 heures [1,12].
- %j
-
Le numéro du jour dans l'année [1,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,60], 60 peut être utilisé pour les secondes de
rattrapage ; 61 était possible antérieurement.
- %t
-
Un espace blanc quelconque
- %T
-
Équivalent de %H:%M:%S.
- %U
-
Le numéro 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 numéro du jour dans la semaine [0,6], 0 correspondant au
dimanche.
- %W
-
Le numéro 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'année dans le siècle [0,99]. 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 de l'heure, en fonction de la localisation :
- %Ec
-
Une représentation différente de la date et de 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 alternative 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 en utilisant les symboles numériques alternatifs. Les zéros
en tête sont permis mais pas obligatoires.
- %OH
-
L'heure, sur 24 heures, utilisant les symboles numériques alternatifs.
- %OI
-
L'heure, sur 12 heures, utilisant les symboles numériques alternatifs.
- %Om
-
Le numéro du mois en utilisant les symboles numériques alternatifs.
- %OM
-
Les minutes en utilisant les symboles numériques alternatifs.
- %OS
-
Les secondes en utilisant les symboles numériques alternatifs..
- %OU
-
Le numéro de la semaine en utilisant les symboles numériques
alternatifs. Dimanche premier jour de la semaine.
- %Ow
-
Le numéro du jour dans la semaine en utilisant les symboles numériques
alternatifs, le dimanche étant zéro.
- %OW
-
Le numéro du jour de la semaine en utilisant les symboles numériques
alternatifs, en commençant le lundi.
- %Oy
-
L'année (ou décalage par rapport à %C) en utilisant les symboles
numériques régionaux alternatifs.
VALEUR RENVOYÉE
La fonction strptime() renvoie un pointeur sur le premier caractère de la
chaîne s 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 l’octet NULL en fin de chaîne. Si
strptime() n'arrive pas à effectuer toutes les conversions, elle renvoie
NULL.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
| Interface | Attribut | Valeur
|
|
strptime()
| Sécurité 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 être initialisé
avant l'appel. Les détails diffèrent suivant les systèmes
UNIX. L'implémentation de la bibliothèque glibc 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é.
La conversion « y » (année dans le siècle) est toujours considérée comme
appartenant à 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 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], 1 correspondant au lundi.
- %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 une prise en
charge 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(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 française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Grégoire Scano <gregoire.scano@malloc.fr>
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 à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ATTRIBUTS
-
- STANDARDS
-
- HISTORIQUE
-
- NOTES
-
- Notes de la glibc
-
- EXEMPLES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:27 GMT, September 19, 2025