strftime
| Défini dans l'en-tête <time.h>
|
||
size_t strftime( char* str, size_t count,
const char* format, const struct tm* tp );
|
(jusqu'à C99) | |
size_t strftime( char* restrict str, size_t count,
const char* restrict format, const struct tm* restrict tp );
|
(depuis C99) | |
Convertit les informations de date et d'heure à partir d'un temps calendaire donné tp en une chaîne de caractères multi-octets terminée par un caractère nul str selon la chaîne de format format. Jusqu'à count octets sont écrits.
Paramètres
| str | - | pointeur vers le premier élément du tableau char pour la sortie |
| count | - | nombre maximum d'octets à écrire |
| format | - | pointeur vers une chaîne de caractères multi-octets terminée par un caractère nul spécifiant le format de conversion |
| tp | - | pointeur vers un objet struct tm spécifiant l'heure à formater
|
Chaîne de format
La chaîne de format se compose de zéro ou plusieurs spécificateurs de conversion et de caractères ordinaires (sauf %). Tous les caractères ordinaires, y compris le caractère nul de terminaison, sont copiés dans la chaîne de sortie sans modification. Chaque spécification de conversion commence par le caractère %, facultativement suivi d'un modificateur E ou O (ignoré s'il n'est pas supporté par la locale), suivi du caractère qui détermine le comportement du spécificateur. Les spécificateurs de format suivants sont disponibles :
| Conversion spécificateur |
Explication | Champs utilisés |
|---|---|---|
%
|
écrit le littéral %. La spécification de conversion complète doit être %%.
|
|
n(C99) |
écrit le caractère de nouvelle ligne | |
t(C99) |
écrit le caractère de tabulation horizontale | |
| Année | ||
Y
|
écrit l'année sous forme de nombre décimal, p.ex. 2017 | tm_year
|
EY(C99) |
écrit l'année dans la représentation alternative, p.ex. 平成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 (intervalle [00,99])
|
tm_year
|
Oy(C99) |
écrit les 2 derniers chiffres de l'année en utilisant le système numérique alternatif, p.ex. 十一 au lieu de 11 dans la locale ja_JP | tm_year
|
Ey(C99) |
écrit l'année comme décalage par rapport à la période calendaire alternative de la locale %EC (dépendant de la locale)
|
tm_year
|
C(C99) |
écrit les 2 premiers chiffres de l'année sous forme de nombre décimal (intervalle [00,99])
|
tm_year
|
EC(C99) |
écrit le nom de l'année de base (période) dans la représentation alternative de la locale, p.ex. 平成 (ère Heisei) dans ja_JP | tm_year
|
G(C99) |
écrit l'année basée sur la semaine 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(C99) |
écrit les 2 derniers chiffres de l'année basée sur la semaine ISO 8601, c'est-à-dire l'année qui contient la semaine spécifiée (intervalle [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 du mois abrégé, p.ex. Oct (dépendant de la locale)
|
tm_mon
|
Ob(C23) |
écrit le nom du mois abrégé dans la représentation alternative de la locale | tm_mon
|
h(C99) |
synonyme de b
|
tm_mon
|
B
|
écrit le nom du mois complet, p.ex. October (dépendant de la locale)
|
tm_mon
|
OB(C23) |
écrit le nom du mois complet approprié dans la représentation alternative de la locale | tm_mon
|
m
|
écrit le mois sous forme de nombre décimal (intervalle [01,12])
|
tm_mon
|
Om(C99) |
écrit le mois en utilisant le système numérique alternatif, p.ex. 十二 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 (dimanche est le premier jour de la semaine) (intervalle [00,53])
|
tm_year, tm_wday, tm_yday
|
OU(C99) |
écrit la semaine de l'année, comme par %U, en utilisant le système numérique alternatif, p.ex. 五十二 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 (lundi est le premier jour de la semaine) (intervalle [00,53])
|
tm_year, tm_wday, tm_yday
|
OW(C99) |
écrit la semaine de l'année, comme par %W, en utilisant le système numérique alternatif, p.ex. 五十二 au lieu de 52 dans la locale ja_JP
|
tm_year, tm_wday, tm_yday
|
V(C99) |
écrit la semaine ISO 8601 de l'année (intervalle [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(C99) |
écrit la semaine de l'année, comme par %V, en utilisant le système numérique alternatif, p.ex. 五十二 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 (intervalle [001,366])
|
tm_yday
|
d
|
écrit le jour du mois sous forme de nombre décimal (intervalle [01,31])
|
tm_mday
|
Od(C99) |
écrit le jour du mois basé sur zéro en utilisant le système numérique alternatif, p.ex. 二十七 au lieu de 27 dans la locale ja_JP
Un caractère unique est précédé d'un espace. |
tm_mday
|
e(C99) |
écrit le jour du mois sous forme de nombre décimal (intervalle [1,31]).
Un chiffre unique est précédé d'un espace. |
tm_mday
|
Oe(C99) |
écrit le jour du mois basé sur un en utilisant le système numérique alternatif, p.ex. 二十七 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 du jour de la semaine abrégé, p.ex. Fri (dépendant de la locale)
|
tm_wday
|
A
|
écrit le nom du jour de la semaine complet, p.ex. Friday (dépendant de la locale)
|
tm_wday
|
w
|
écrit le jour de la semaine sous forme de nombre décimal, où dimanche est 0 (intervalle [0-6])
|
tm_wday
|
Ow(C99) |
écrit le jour de la semaine, où dimanche est 0, en utilisant le système numérique alternatif, p.ex. 二 au lieu de 2 dans la locale ja_JP
|
tm_wday
|
u(C99) |
écrit le jour de la semaine sous forme de nombre décimal, où lundi est 1 (format ISO 8601) (intervalle [1-7])
|
tm_wday
|
Ou(C99) |
écrit le jour de la semaine, où lundi est 1, en utilisant le système numérique alternatif, p.ex. 二 au lieu de 2 dans la locale ja_JP
|
tm_wday
|
| Heure, minute, seconde | ||
H
|
écrit l'heure sous forme de nombre décimal, horaire sur 24 heures (intervalle [00-23])
|
tm_hour
|
OH(C99) |
écrit l'heure de l'horaire sur 24 heures en utilisant le système numérique alternatif, p.ex. 十八 au lieu de 18 dans la locale ja_JP | tm_hour
|
I
|
écrit l'heure sous forme de nombre décimal, horaire sur 12 heures (intervalle [01,12])
|
tm_hour
|
OI(C99) |
écrit l'heure de l'horaire sur 12 heures en utilisant le système numérique alternatif, p.ex. 六 au lieu de 06 dans la locale ja_JP | tm_hour
|
M
|
écrit la minute sous forme de nombre décimal (intervalle [00,59])
|
tm_min
|
OM(C99) |
écrit la minute en utilisant le système numérique alternatif, p.ex. 二十五 au lieu de 25 dans la locale ja_JP | tm_min
|
S
|
écrit la seconde sous forme de nombre décimal (intervalle [00,60])
|
tm_sec
|
OS(C99) |
écrit la seconde en utilisant le système numérique alternatif, p.ex. 二十四 au lieu de 24 dans la locale ja_JP | tm_sec
|
| Autre | ||
c
|
écrit la chaîne de date et d'heure standard, p.ex. Sun Oct 17 04:41:13 2010 (dépendant de la locale)
|
tous |
Ec(C99) |
écrit la chaîne de date et d'heure alternative, p.ex. en utilisant 平成23年 (année Heisei 23) au lieu de 2011年 (année 2011) dans la locale ja_JP | tous |
x
|
écrit la représentation de date localisée (dépendant de la locale) | tous |
Ex(C99) |
écrit la représentation de date alternative, p.ex. en utilisant 平成23年 (année Heisei 23) au lieu de 2011年 (année 2011) dans la locale ja_JP | tous |
X
|
écrit la représentation d'heure localisée, p.ex. 18:40:20 ou 6:40:20 PM (dépendant de la locale) | tous |
EX(C99) |
écrit la représentation d'heure alternative (dépendant de la locale) | tous |
D(C99) |
équivalent à "%m/%d/%y" | tm_mon, tm_mday, tm_year
|
F(C99) |
équivalent à "%Y-%m-%d" (le format de date ISO 8601) | tm_mon, tm_mday, tm_year
|
r(C99) |
écrit l'heure horaire sur 12 heures localisée (dépendant de la locale) | tm_hour, tm_min, tm_sec
|
R(C99) |
équivalent à "%H:%M" | tm_hour, tm_min
|
T(C99) |
équivalent à "%H:%M:%S" (le format d'heure ISO 8601) | tm_hour, tm_min, tm_sec
|
p
|
écrit le a.m. ou p.m. localisé (dépendant de la locale) | tm_hour
|
z(C99) |
écrit le décalage par rapport à UTC au format ISO 8601 (p.ex. -0430), ou aucun caractère si l'information de fuseau horaire n'est pas disponible
|
tm_isdst
|
Z
|
écrit le nom ou l'abréviation du fuseau horaire dépendant de la locale, ou aucun caractère si l'information de fuseau horaire n'est pas disponible | tm_isdst
|
Valeur de retour
Le nombre d'octets écrits dans le tableau de caractères pointé par str sans inclure le '\0' de terminaison en cas de succès. Si count a été atteint avant que la chaîne entière puisse être stockée, 0 est renvoyé et le contenu est indéterminé.
Exemple
#include <locale.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
char buff[70];
struct tm my_time =
{
.tm_year = 112, // = year 2012
.tm_mon = 9, // = 10th month
.tm_mday = 9, // = 9th day
.tm_hour = 8, // = 8 hours
.tm_min = 10, // = 10 minutes
.tm_sec = 20 // = 20 secs
};
if (strftime(buff, sizeof buff, "%A %c", &my_time))
puts(buff);
else
puts("strftime failed");
setlocale(LC_TIME, "el_GR.utf8");
if (strftime(buff, sizeof buff, "%A %c", &my_time))
puts(buff);
else
puts("strftime failed");
}
Sortie possible :
Sunday Sun Oct 9 08:10:20 2012
Κυριακή Κυρ 09 Οκτ 2012 08:10:20 πμ EST
Références
- Norme C23 (ISO/IEC 9899:2024):
- 7.27.3.5 La fonction strftime (p: TBD)
- Norme C17 (ISO/IEC 9899:2018):
- 7.27.3.5 La fonction strftime (p: 288-291)
- Norme C11 (ISO/IEC 9899:2011):
- 7.27.3.5 La fonction strftime (p: 394-397)
- Norme C99 (ISO/IEC 9899:1999):
- 7.23.3.5 La fonction strftime (p: 343-347)
- Norme C89/C90 (ISO/IEC 9899:1990):
- 4.12.3.5 La fonction strftime
Voir aussi
(obsolète dans C23)(C11) |
convertit un objet tm en une représentation textuelle (fonction) |
(obsolète dans C23)(C11) |
convertit un objet time_t en une représentation textuelle (fonction) |
(C95) |
convertit un objet tm en une représentation textuelle personnalisée en chaîne large (fonction) |
Documentation C++ pour strftime
| |