std:: put_time
|
Definido en el encabezado
<iomanip>
|
||
|
template
<
class
CharT
>
/*unspecified*/ put_time ( const std:: tm * tmb, const CharT * fmt ) ; |
(desde C++11) | |
Cuando se utiliza en una expresión
out
<<
put_time
(
tmb, fmt
)
, convierte la información de fecha y hora de un tiempo calendario dado
tmb
a una cadena de caracteres de acuerdo con la
cadena de formato
fmt
, como si se llamara a
std::strftime
,
std::wcsftime
, o análogo (dependiendo de
CharT
), según la faceta
std::time_put
de la configuración regional actualmente imbricada en el flujo de salida
out
.
Contenidos |
Parámetros
| tmb | - | puntero a la estructura de tiempo de calendario como se obtiene de std::localtime o std::gmtime |
| fmt | - |
puntero a una cadena
CharT
terminada en nulo que especifica el
formato de conversión
|
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, incluido 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 del 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, p.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 un 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 un 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 con
%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 individuales van precedidos por un espacio. |
tm_mday
|
Oe
(C++11) |
escribe el
día del mes
basado en uno utilizando 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 utilizando 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 alternativa de fecha , 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 en formato 12 horas localizado (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 (ej.
-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
Un objeto de tipo no especificado tal que
-
si
out
es un objeto de tipo
std::
basic_ostream
<
CharT, Traits
>
, la expresión
out
<<
put_time
(
tmb, fmt
)
- tiene tipo std:: basic_ostream < CharT, Traits > &
- tiene valor out
- se comporta como si llamara a f ( out, tmb, fmt )
donde la función f se define como:
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); }
Ejemplo
#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'; }
Salida posible:
ru_RU: Ср. 28 дек. 2011 10:21:16 EST ja_JP: 2011年12月28日 10時21分16秒 EST
Véase también
|
formatea el contenido de
std::tm
para salida como secuencia de caracteres
(plantilla de clase) |
|
|
(C++11)
|
analiza un valor de fecha/hora de formato especificado
(plantilla de función) |
|
convierte un objeto
std::tm
a representación textual personalizada
(función) |
|
|
convierte un objeto
std::tm
a representación textual de cadena ancha personalizada
(función) |