std:: strftime
|
Definido en el encabezado
<ctime>
|
||
|
std::
size_t
strftime
(
char
*
str,
std::
size_t
count,
const
char
*
format,
const
std::
tm
*
tp
)
;
|
||
Convierte la información de fecha y hora de un tiempo de calendario dado tp a una cadena de caracteres multibyte terminada en nulo str de acuerdo con la cadena de formato format . Se escriben hasta count bytes.
Contenidos |
Parámetros
| str | - | puntero al primer elemento del array de caracteres para salida |
| count | - | número máximo de bytes a escribir |
| format | - | puntero a una cadena de caracteres multibyte terminada en nulo que especifica el formato de conversión |
| tp | - | puntero al objeto que contiene la información de fecha y hora a convertir |
Cadena de formato
La cadena de formato consiste en cero o más especificadores de conversión y caracteres ordinarios (excepto
%
). Todos los caracteres ordinarios, incluyendo el carácter nulo terminador, se copian a la cadena de salida sin modificación. Cada especificación de conversión comienza con el carácter
%
, opcionalmente seguido por el modificador
E
o
O
(ignorado si no es compatible con la configuración regional), seguido por el carácter que determina el comportamiento del especificador. Los siguientes especificadores de formato están disponibles:
|
Especificador
de conversión |
Explicación | Campos utilizados |
|---|---|---|
%
|
escribe literalmente
%
. La especificación de conversión completa debe ser
%%
.
|
|
n
(C++11) |
escribe el carácter de nueva línea | |
t
(C++11) |
escribe el carácter de tabulación horizontal | |
| Año | ||
Y
|
escribe el año como un número decimal, ej. 2017 |
tm_year
|
EY
(C++11) |
escribe el año en representación alternativa, ej. 平成23年 (año Heisei 23) en lugar de 2011年 (año 2011) en la configuración regional ja_JP |
tm_year
|
y
|
escribe los últimos 2 dígitos del
año
como número decimal (rango
[00,99]
)
|
tm_year
|
Oy
(C++11) |
escribe los últimos 2 dígitos del año usando el sistema numérico alternativo, por ejemplo 十一 en lugar de 11 en la configuración regional ja_JP |
tm_year
|
Ey
(C++11) |
escribe el
año
como desplazamiento desde el período del calendario alternativo de la localización
%EC
(dependiente de la localización)
|
tm_year
|
C
(C++11) |
escribe los primeros 2 dígitos del
año
como un número decimal (rango
[00,99]
)
|
tm_year
|
EC
(C++11) |
escribe el nombre del año base (periodo) en la representación alternativa de la configuración regional, por ejemplo 平成 (era Heisei) en ja_JP |
tm_year
|
G
(C++11) |
escribe el
año basado en semanas ISO 8601
, es decir, el año que contiene la semana especificada.
En ISO 8601 las semanas comienzan el lunes y la primera semana del año debe cumplir los siguientes requisitos:
|
tm_year
,
tm_wday
,
tm_yday
|
g
(C++11) |
escribe los últimos 2 dígitos del
año basado en semanas ISO 8601
, es decir, el año que contiene la semana especificada (rango
[00,99]
).
En ISO 8601 las semanas comienzan el lunes y la primera semana del año debe cumplir los siguientes requisitos:
|
tm_year
,
tm_wday
,
tm_yday
|
| Mes | ||
b
|
escribe el
nombre del mes abreviado
, ej.
Oct
(dependiente de la configuración regional)
|
tm_mon
|
h
(C++11) |
sinónimo de
b
|
tm_mon
|
B
|
escribe el
nombre completo del mes
, ej.
October
(dependiente de la configuración regional)
|
tm_mon
|
m
|
escribe el
mes
como número decimal (rango
[01,12]
)
|
tm_mon
|
Om
(C++11) |
escribe el mes usando el sistema numérico alternativo, por ejemplo 十二 en lugar de 12 en la configuración regional ja_JP |
tm_mon
|
| Semana | ||
U
|
escribe la
semana del año
como número decimal (el domingo es el primer día de la semana) (rango
[00,53]
)
|
tm_year
,
tm_wday
,
tm_yday
|
OU
(C++11) |
escribe la
semana del año
, como por
%U
, usando el sistema numérico alternativo, ej. 五十二 en lugar de 52 en la configuración regional ja_JP
|
tm_year
,
tm_wday
,
tm_yday
|
W
|
escribe la
semana del año
como número decimal (el lunes es el primer día de la semana) (rango
[00,53]
)
|
tm_year
,
tm_wday
,
tm_yday
|
OW
(C++11) |
escribe la
semana del año
, como por
%W
, usando el sistema numérico alternativo, ej. 五十二 en lugar de 52 en la configuración regional ja_JP
|
tm_year
,
tm_wday
,
tm_yday
|
V
(C++11) |
escribe la
semana ISO 8601 del año
(rango
[01,53]
).
En ISO 8601 las semanas comienzan el lunes y la primera semana del año debe cumplir los siguientes requisitos:
|
tm_year
,
tm_wday
,
tm_yday
|
OV
(C++11) |
escribe la
semana del año
, como por
%V
, usando el sistema numérico alternativo, ej. 五十二 en lugar de 52 en la configuración regional ja_JP
|
tm_year
,
tm_wday
,
tm_yday
|
| Día del año/mes | ||
j
|
escribe el
día del año
como un número decimal (rango
[001,366]
)
|
tm_yday
|
d
|
escribe el
día del mes
como un número decimal (rango
[01,31]
)
|
tm_mday
|
Od
(C++11) |
escribe el
día del mes
basado en cero usando el sistema numérico alternativo, por ejemplo, 二十七 en lugar de 27 en la configuración regional ja_JP
Un solo carácter va precedido por un espacio. |
tm_mday
|
e
(C++11) |
escribe el
día del mes
como un número decimal (rango
[1,31]
).
Los dígitos únicos van precedidos por un espacio. |
tm_mday
|
Oe
(C++11) |
escribe el
día del mes
basado en uno usando el sistema numérico alternativo, por ejemplo 二十七 en lugar de 27 en la configuración regional ja_JP
Un solo carácter va precedido por un espacio. |
tm_mday
|
| Día de la semana | ||
a
|
escribe el
nombre abreviado del día de la semana
, ej.
Fri
(dependiente de la configuración regional)
|
tm_wday
|
A
|
escribe el
nombre completo del día de la semana
, ej.
Friday
(dependiente de la configuración regional)
|
tm_wday
|
w
|
escribe el
día de la semana
como un número decimal, donde el domingo es
0
(rango
[0-6]
)
|
tm_wday
|
Ow
(C++11) |
escribe el
día de la semana
, donde el domingo es
0
, usando el sistema numérico alternativo, por ejemplo 二 en lugar de 2 en la configuración regional ja_JP
|
tm_wday
|
u
(C++11) |
escribe el
día de la semana
como un número decimal, donde el lunes es
1
(formato ISO 8601) (rango
[1-7]
)
|
tm_wday
|
Ou
(C++11) |
escribe el
día de la semana
, donde el lunes es
1
, usando el sistema numérico alternativo, por ejemplo 二 en lugar de 2 en la configuración regional ja_JP
|
tm_wday
|
| Hora, minuto, segundo | ||
H
|
escribe la
hora
como número decimal, reloj de 24 horas (rango
[00-23]
)
|
tm_hour
|
OH
(C++11) |
escribe la hora del reloj de 24 horas utilizando el sistema numérico alternativo, por ejemplo 十八 en lugar de 18 en la configuración regional ja_JP |
tm_hour
|
I
|
escribe
hour
como un número decimal, reloj de 12 horas (rango
[01,12]
)
|
tm_hour
|
OI
(C++11) |
escribe la hora del reloj de 12 horas usando el sistema numérico alternativo, por ejemplo 六 en lugar de 06 en la configuración regional ja_JP |
tm_hour
|
M
|
escribe el
minuto
como un número decimal (rango
[00,59]
)
|
tm_min
|
OM
(C++11) |
escribe el minuto usando el sistema numérico alternativo, por ejemplo 二十五 en lugar de 25 en la configuración regional ja_JP |
tm_min
|
S
|
escribe el
segundo
como un número decimal (rango
[00,60]
)
|
tm_sec
|
OS
(C++11) |
escribe el segundo usando el sistema numérico alternativo, por ejemplo 二十四 en lugar de 24 en la configuración regional ja_JP |
tm_sec
|
| Otros | ||
c
|
escribe
cadena de fecha y hora estándar
, ej.
Sun Oct 17 04:41:13 2010
(dependiente de la configuración regional)
|
todos |
Ec
(C++11) |
escribe cadena de fecha y hora alternativa , por ejemplo usando 平成23年 (año Heisei 23) en lugar de 2011年 (año 2011) en la configuración regional ja_JP | todos |
x
|
escribe representación de fecha localizada (dependiente de la configuración regional) | todos |
Ex
(C++11) |
escribe representación de fecha alternativa , por ejemplo usando 平成23年 (año Heisei 23) en lugar de 2011年 (año 2011) en la configuración regional ja_JP | todos |
X
|
escribe la representación localizada de la hora , ej. 18:40:20 o 6:40:20 PM (dependiente de la configuración regional) | todos |
EX
(C++11) |
escribe representación alternativa de tiempo (dependiente de la configuración regional) | todos |
D
(C++11) |
equivalente a "%m/%d/%y" |
tm_mon
,
tm_mday
,
tm_year
|
F
(C++11) |
equivalente a "%Y-%m-%d" (el formato de fecha ISO 8601) |
tm_mon
,
tm_mday
,
tm_year
|
r
(C++11) |
escribe la hora del reloj de 12 horas localizada (dependiente de la configuración regional) |
tm_hour
,
tm_min
,
tm_sec
|
R
(C++11) |
equivalente a "%H:%M" |
tm_hour
,
tm_min
|
T
(C++11) |
equivalente a "%H:%M:%S" (el formato de hora ISO 8601) |
tm_hour
,
tm_min
,
tm_sec
|
p
|
escribe a.m. o p.m. localizado (dependiente de la configuración regional) |
tm_hour
|
z
(C++11) |
escribe el
desplazamiento de UTC
en formato ISO 8601 (por ejemplo,
-0430
), o ningún carácter si la información de zona horaria no está disponible
|
tm_isdst
|
Z
|
escribe el nombre o abreviatura de la zona horaria dependiente de la configuración regional , o ningún carácter si la información de la zona horaria no está disponible |
tm_isdst
|
Valor de retorno
El número de bytes escritos en el array de caracteres apuntado por str sin incluir el carácter terminador ' \0 ' en caso de éxito. Si se alcanzó count antes de que toda la cadena pudiera ser almacenada, 0 es retornado y los contenidos son indeterminados.
Ejemplo
#include <ctime> #include <iostream> #include <iterator> #include <locale> void utcExample() { // Ejemplo del formato UTC muy popular 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(); }
Salida posible:
Tuesday Tue Sep 7 19:40:35 2021 火曜日 2021年09月07日 19時40分35秒 2021-09-07T19:40:35Z
Véase también
|
convierte un objeto
std::tm
a una representación textual
(función) |
|
|
convierte un objeto
std::time_t
a una representación textual
(función) |
|
|
convierte un objeto
std::tm
a una representación textual personalizada de cadena ancha
(función) |
|
|
(C++11)
|
formatea y emite un valor de fecha/hora según el formato especificado
(plantilla de función) |
soporte de formateo para
hh_mm_ss
(especialización de plantilla de clase) |
|
|
Documentación C
para
strftime
|
|