std:: put_time
|
Défini dans l'en-tête
<iomanip>
|
||
|
template
<
class
CharT
>
/*unspecified*/ put_time ( const std:: tm * tmb, const CharT * fmt ) ; |
(depuis C++11) | |
Lorsqu'il est utilisé dans une expression
out
<<
put_time
(
tmb, fmt
)
, convertit les informations de date et d'heure d'un temps calendaire donné
tmb
en une chaîne de caractères selon la
chaîne de format
fmt
, comme s'il appelait
std::strftime
,
std::wcsftime
, ou un équivalent (selon
CharT
), conformément à la facette
std::time_put
de la locale actuellement imbriquée dans le flux de sortie
out
.
Table des matières |
Paramètres
| tmb | - | pointeur vers la structure de temps calendaire comme obtenue de std::localtime ou std::gmtime |
| fmt | - |
pointeur vers une chaîne
CharT
terminée par un caractère nul spécifiant le
format de conversion
|
Chaîne de format
La chaîne de format est constituée de zéro ou plusieurs spécificateurs de conversion et de caractères ordinaires (à l'exception de
%
). Tous les caractères ordinaires, y compris le caractère nul de fin, sont copiés dans la chaîne de sortie sans modification. Chaque spécification de conversion commence par le caractère
%
, éventuellement suivi du modificateur
E
ou
O
(ignoré s'il n'est pas pris en charge par les paramètres régionaux), suivi du caractère qui détermine le comportement du spécificateur. Les spécificateurs de format suivants sont disponibles :
|
Spécificateur
de conversion |
Explication | Champs utilisés |
|---|---|---|
%
|
écrit le caractère littéral
%
. La spécification de conversion complète doit être
%%
.
|
|
n
(C++11) |
écrit un caractère de nouvelle ligne | |
t
(C++11) |
écrit le caractère de tabulation horizontale | |
| Année | ||
Y
|
écrit l' année sous forme de nombre décimal, par exemple 2017 |
tm_year
|
EY
(C++11) |
écrit l' année dans la représentation alternative, par exemple 平成23年 (année Heisei 23) au lieu de 2011年 (année 2011) dans la locale ja_JP |
tm_year
|
y
|
écrit les 2 derniers chiffres de l'
année
sous forme de nombre décimal (plage
[00,99]
)
|
tm_year
|
Oy
(C++11) |
écrit les 2 derniers chiffres de l' année en utilisant le système numérique alternatif, par exemple 十一 au lieu de 11 dans la locale ja_JP |
tm_year
|
Ey
(C++11) |
écrit l'
année
comme décalage depuis la période du calendrier alternatif de la locale
%EC
(dépendant de la locale)
|
tm_year
|
C
(C++11) |
écrit les 2 premiers chiffres de
l'année
sous forme de nombre décimal (plage
[00,99]
)
|
tm_year
|
EC
(C++11) |
écrit le nom de l'année de base (période) dans la représentation alternative de la locale, par exemple 平成 (ère Heisei) en ja_JP |
tm_year
|
G
(C++11) |
écrit
l'année basée sur les semaines ISO 8601
, c'est-à-dire l'année qui contient la semaine spécifiée.
Dans la norme ISO 8601, les semaines commencent le lundi et la première semaine de l'année doit satisfaire aux exigences suivantes :
|
tm_year
,
tm_wday
,
tm_yday
|
g
(C++11) |
écrit les 2 derniers chiffres de
l'année basée sur les semaines ISO 8601
, c'est-à-dire l'année qui contient la semaine spécifiée (plage
[00,99]
).
Dans la norme ISO 8601, les semaines commencent le lundi et la première semaine de l'année doit satisfaire aux exigences suivantes :
|
tm_year
,
tm_wday
,
tm_yday
|
| Mois | ||
b
|
écrit le
nom abrégé du mois
, par ex.
Oct
(dépendant des paramètres régionaux)
|
tm_mon
|
h
(C++11) |
synonyme de
b
|
tm_mon
|
B
|
écrit le
nom complet du mois
, par ex.
October
(dépendant des paramètres régionaux)
|
tm_mon
|
m
|
écrit le
mois
sous forme de nombre décimal (plage
[01,12]
)
|
tm_mon
|
Om
(C++11) |
écrit le mois en utilisant le système numérique alternatif, par exemple 十二 au lieu de 12 dans la locale ja_JP |
tm_mon
|
| Semaine | ||
U
|
écrit la
semaine de l'année
sous forme de nombre décimal (le dimanche est le premier jour de la semaine) (plage
[00,53]
)
|
tm_year
,
tm_wday
,
tm_yday
|
OU
(C++11) |
écrit
la semaine de l'année
, comme par
%U
, en utilisant le système numérique alternatif, par exemple 五十二 au lieu de 52 dans les paramètres régionaux ja_JP
|
tm_year
,
tm_wday
,
tm_yday
|
W
|
écrit la
semaine de l'année
sous forme de nombre décimal (le lundi est le premier jour de la semaine) (plage
[00,53]
)
|
tm_year
,
tm_wday
,
tm_yday
|
OW
(C++11) |
écrit
la semaine de l'année
, comme par
%W
, en utilisant le système numérique alternatif, par exemple 五十二 au lieu de 52 dans les paramètres régionaux ja_JP
|
tm_year
,
tm_wday
,
tm_yday
|
V
(C++11) |
écrit
la semaine ISO 8601 de l'année
(plage
[01,53]
).
Dans la norme ISO 8601, les semaines commencent le lundi et la première semaine de l'année doit satisfaire aux exigences suivantes :
|
tm_year
,
tm_wday
,
tm_yday
|
OV
(C++11) |
écrit
la semaine de l'année
, comme par
%V
, en utilisant le système numérique alternatif, par exemple 五十二 au lieu de 52 dans les paramètres régionaux ja_JP
|
tm_year
,
tm_wday
,
tm_yday
|
| Jour de l'année/mois | ||
j
|
écrit le
jour de l'année
sous forme de nombre décimal (plage
[001,366]
)
|
tm_yday
|
d
|
écrit le
jour du mois
sous forme de nombre décimal (plage
[01,31]
)
|
tm_mday
|
Od
(C++11) |
écrit le
jour du mois
en base zéro en utilisant le système numérique alternatif, par exemple 二十七 au lieu de 27 dans la locale ja_JP
Un caractère unique est précédé d'un espace. |
tm_mday
|
e
(C++11) |
écrit le
jour du mois
sous forme de nombre décimal (plage
[1,31]
).
Un chiffre unique est précédé d'un espace. |
tm_mday
|
Oe
(C++11) |
écrit le
jour du mois
en utilisant la numérotation un-basée et le système numérique alternatif, par exemple 二十七 au lieu de 27 dans la locale ja_JP
Un caractère unique est précédé d'un espace. |
tm_mday
|
| Jour de la semaine | ||
a
|
écrit le nom
abrégé du jour de la semaine
, par ex.
Fri
(dépendant des paramètres régionaux)
|
tm_wday
|
A
|
écrit le nom
complet du jour de la semaine
, par ex.
Friday
(dépendant des paramètres régionaux)
|
tm_wday
|
w
|
écrit le
jour de la semaine
sous forme de nombre décimal, où dimanche est
0
(plage
[0-6]
)
|
tm_wday
|
Ow
(C++11) |
écrit
weekday
, où dimanche est
0
, en utilisant le système numérique alternatif, par exemple 二 au lieu de 2 dans la locale ja_JP
|
tm_wday
|
u
(C++11) |
écrit le
jour de la semaine
sous forme de nombre décimal, où lundi est
1
(format ISO 8601) (plage
[1-7]
)
|
tm_wday
|
Ou
(C++11) |
écrit
weekday
, où lundi est
1
, en utilisant le système numérique alternatif, par exemple 二 au lieu de 2 dans les paramètres régionaux ja_JP
|
tm_wday
|
| Heure, minute, seconde | ||
H
|
écrit
l'heure
sous forme de nombre décimal, horloge 24 heures (plage
[00-23]
)
|
tm_hour
|
OH
(C++11) |
écrit l' heure de l'horloge 24 heures en utilisant le système numérique alternatif, par exemple 十八 au lieu de 18 dans la locale ja_JP |
tm_hour
|
I
|
écrit
hour
sous forme de nombre décimal, horloge 12 heures (plage
[01,12]
)
|
tm_hour
|
OI
(C++11) |
écrit l'heure à partir de l'horloge 12 heures en utilisant le système numérique alternatif, par exemple 六 au lieu de 06 dans la locale ja_JP |
tm_hour
|
M
|
écrit la
minute
sous forme de nombre décimal (plage
[00,59]
)
|
tm_min
|
OM
(C++11) |
écrit la minute en utilisant le système numérique alternatif, par exemple 二十五 au lieu de 25 dans la locale ja_JP |
tm_min
|
S
|
écrit la
seconde
sous forme de nombre décimal (plage
[00,60]
)
|
tm_sec
|
OS
(C++11) |
écrit la seconde en utilisant le système numérique alternatif, par exemple 二十四 au lieu de 24 dans les paramètres régionaux ja_JP |
tm_sec
|
| Autre | ||
c
|
écrit
la chaîne standard de date et heure
, par ex.
Sun Oct 17 04:41:13 2010
(dépendant des paramètres régionaux)
|
tous |
Ec
(C++11) |
écrit une chaîne de date et heure alternative , par exemple en utilisant 平成23年 (année Heisei 23) au lieu de 2011年 (année 2011) dans les paramètres régionaux ja_JP | tous |
x
|
écrit la représentation de date localisée (dépendante de la locale) | tous |
Ex
(C++11) |
écrit une représentation alternative de la date , par exemple en utilisant 平成23年 (année Heisei 23) au lieu de 2011年 (année 2011) dans les paramètres régionaux ja_JP | tous |
X
|
écrit la représentation horaire localisée , par exemple 18:40:20 ou 6:40:20 PM (dépendant des paramètres régionaux) | tous |
EX
(C++11) |
écrit une représentation alternative du temps (dépendante de la locale) | tous |
D
(C++11) |
équivalent à "%m/%d/%y" |
tm_mon
,
tm_mday
,
tm_year
|
F
(C++11) |
équivalent à "%Y-%m-%d" (le format de date ISO 8601) |
tm_mon
,
tm_mday
,
tm_year
|
r
(C++11) |
écrit l'heure au format 12 heures localisé (dépendant des paramètres régionaux) |
tm_hour
,
tm_min
,
tm_sec
|
R
(C++11) |
équivalent à "%H:%M" |
tm_hour
,
tm_min
|
T
(C++11) |
équivalent à "%H:%M:%S" (le format horaire ISO 8601) |
tm_hour
,
tm_min
,
tm_sec
|
p
|
écrit a.m. ou p.m. (dépendant de la locale) |
tm_hour
|
z
(C++11) |
écrit le
décalage horaire par rapport à UTC
au format ISO 8601 (par exemple
-0430
), ou aucun caractère si les informations de fuseau horaire ne sont pas disponibles
|
tm_isdst
|
Z
|
écrit le nom ou l'abréviation du fuseau horaire dépendant de la locale , ou aucun caractère si les informations de fuseau horaire ne sont pas disponibles |
tm_isdst
|
Valeur de retour
Un objet de type non spécifié tel que
-
si
out
est un objet de type
std::
basic_ostream
<
CharT, Traits
>
, l'expression
out
<<
put_time
(
tmb, fmt
)
- a pour type std:: basic_ostream < CharT, Traits > &
- a pour valeur out
- se comporte comme si elle appelait f ( out, tmb, fmt )
où la fonction f est définie comme :
template<class CharT, class Traits> void f(std::basic_ios<CharT, Traits>& str, const std::tm* tmb, const CharT* fmt) { using Iter = std::ostreambuf_iterator<CharT, Traits>; using TimePut = std::time_put<CharT, Iter>; const TimePut& tp = std::use_facet<TimePut>(str.getloc()); const Iter end = tp.put(Iter(str.rdbuf()), str, str.fill(), tmb, fmt, fmt + Traits::length(fmt)); if (end.failed()) str.setstate(std::ios_base::badbit); }
` et contient des termes spécifiques au C++ qui doivent être préservés selon les instructions. Seul le texte environnant (s'il y en avait) aurait été traduit en français.
Exemple
#include <ctime> #include <iomanip> #include <iostream> int main() { std::time_t t = std::time(nullptr); std::tm tm = *std::localtime(&t); std::cout.imbue(std::locale("ru_RU.utf8")); std::cout << "ru_RU: " << std::put_time(&tm, "%c %Z") << '\n'; std::cout.imbue(std::locale("ja_JP.utf8")); std::cout << "ja_JP: " << std::put_time(&tm, "%c %Z") << '\n'; }
Sortie possible :
ru_RU: Ср. 28 дек. 2011 10:21:16 EST ja_JP: 2011年12月28日 10時21分16秒 EST
Voir aussi
|
formate le contenu de
std::tm
pour la sortie en tant que séquence de caractères
(modèle de classe) |
|
|
(C++11)
|
analyse une valeur de date/heure de format spécifié
(modèle de fonction) |
|
convertit un objet
std::tm
en représentation textuelle personnalisée
(fonction) |
|
|
convertit un objet
std::tm
en représentation textuelle de chaîne large personnalisée
(fonction) |