strptime - Conversion d'une chaîne de dates en une structure tm
Bibliothèque C standard (
libc,
-lc)
#define _XOPEN_SOURCE /* See feature_test_macros(7) */
#include <time.h>
char *strptime(const char *restrict s, const char *restrict format,
struct tm *restrict tm);
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 pointée par l'argument
tm, la conversion
étant réalisée en suivant les indications contenues dans
la chaîne
format.
The broken-down time structure
tm is described in
tm(3type).
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
- 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 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
- 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 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
- The ordinal number of the day of the week (Sunday=0), using
the locale's alternative numeric symbols.
- %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.
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.
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 |
POSIX.1-2001, POSIX.1-2008, SUSv2.
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é.
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.
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 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.
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);
}
time(2),
getdate(3),
scanf(3),
setlocale(3),
strftime(3)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Grégoire Scano <
[email protected]>
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 à
[email protected]