std:: strftime
|
Défini dans l'en-tête
<ctime>
|
||
|
std::
size_t
strftime
(
char
*
str,
std::
size_t
count,
const
char
*
format,
const
std::
tm
*
tp
)
;
|
||
Convertit les informations de date et heure d'un temps calendaire donné tp en une chaîne de caractères multioctets terminée par un caractère nul str selon la chaîne de format format . Jusqu'à count octets sont écrits.
Table des matières |
Paramètres
| str | - | pointeur vers le premier élément du tableau de caractères pour la sortie |
| count | - | nombre maximum d'octets à écrire |
| format | - | pointeur vers une chaîne de caractères multioctets terminée par un caractère nul spécifiant le format de conversion |
| tp | - | pointeur vers l'objet contenant les informations de date et d'heure à convertir |
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 l'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épend 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 la locale 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 la locale 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 les paramètres régionaux 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]
).
Les chiffres uniques sont précédés 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 les paramètres régionaux 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 au format 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 exemple
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 de date 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 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 la 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 12 heures localisée (dépendante de la locale) |
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 localisation) |
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
Le nombre d'octets écrits dans le tableau de caractères pointé par str sans inclure le caractère de fin ' \0 ' en cas de succès. Si count a été atteint avant que la chaîne entière puisse être stockée, 0 est retourné et le contenu est indéterminé.
Exemple
#include <ctime> #include <iostream> #include <iterator> #include <locale> void utcExample() { // Exemple du format UTC très populaire RFC 3339 std::time_t time = std::time({}); char timeString[std::size("yyyy-mm-ddThh:mm:ssZ")]; std::strftime(std::data(timeString), std::size(timeString), "%FT%TZ", std::gmtime(&time)); std::cout << timeString << '\n'; } int main() { std::time_t t = std::time(nullptr); char mbstr[100]; if (std::strftime(mbstr, sizeof(mbstr), "%A %c", std::localtime(&t))) std::cout << mbstr << '\n'; std::locale::global(std::locale("ja_JP.utf8")); if (std::strftime(mbstr, sizeof(mbstr), "%A %c", std::localtime(&t))) std::cout << mbstr << '\n'; utcExample(); }
Sortie possible :
Tuesday Tue Sep 7 19:40:35 2021 火曜日 2021年09月07日 19時40分35秒 2021-09-07T19:40:35Z
Voir aussi
|
convertit un objet
std::tm
en une représentation textuelle
(fonction) |
|
|
convertit un objet
std::time_t
en une représentation textuelle
(fonction) |
|
|
convertit un objet
std::tm
en une représentation textuelle personnalisée de chaîne large
(fonction) |
|
|
(C++11)
|
formate et sort une valeur de date/heure selon le format spécifié
(modèle de fonction) |
support de formatage pour
hh_mm_ss
(spécialisation de modèle de classe) |
|
|
Documentation C
pour
strftime
|
|