Namespaces
Variants

std:: put_time

From cppreference.net
< cpp ‎ | io ‎ | manip
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 :

  • Inclut le 4 janvier
  • Inclut le premier jeudi de l'année
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 :

  • Inclut le 4 janvier
  • Inclut le premier jeudi de l'année
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 :

  • Inclut le 4 janvier
  • Inclut le premier jeudi de l'année
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);
}
**Note:** Le code C++ n'a pas été traduit car il se trouve dans des balises `
` 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)