std:: formatter <std::chrono::duration>
|
Definido en el encabezado
<chrono>
|
||
|
template
<
class
Rep,
class
Period,
class
CharT
>
struct formatter < std:: chrono :: duration < Rep, Period > , CharT > ; |
||
Especialización de
std::formatter
que define reglas de formato para una
std::chrono::duration
. La
duration
se interpreta como la hora del día desde la medianoche.
La especialización de std::formatter normalmente no se accede directamente, sino que se utiliza a través de funciones de formato .
Especificación de formato
La especificación de formato tiene la forma
fill-and-align
(opcional)
width
(opcional)
precision
(opcional)
L
(opcional)
chrono-spec
(opcional)
|
|||||||||
fill-and-align
,
width
, y
precision
tienen el mismo significado que en la
especificación de formato estándar
.
precision
es válida solo para tipos
std::chrono::duration
donde el tipo de representación
Rep
es un tipo de punto flotante; de lo contrario, se lanza
std::format_error
.
La configuración regional utilizada para el formato se determina de la siguiente manera:
-
la configuración regional predeterminada
"C"
si
Lno está presente en la especificación de formato, - de lo contrario, la configuración regional denotada por el std::locale pasado a la función de formato, si existe alguno,
-
de lo contrario (
Lestá presente pero no se pasa ningún std::locale a la función de formato), la configuración regional global.
Si la codificación de literal de cadena (ordinaria o ancha) es una forma de codificación Unicode y la configuración regional se encuentra entre un conjunto definido por la implementación de configuraciones regionales, cada reemplazo que depende de la configuración regional se realiza como si la secuencia de caracteres de reemplazo se convirtiera a la codificación literal.
La
chrono-spec
consiste en uno o más especificadores de conversión y caracteres ordinarios (distintos de
{
,
}
, y
%
). Una
chrono-spec
debe comenzar con un especificador de conversión. Todos los caracteres ordinarios se escriben en la salida sin modificación. Cada especificador de conversión no modificado comienza con un carácter
%
seguido de un carácter que determina el comportamiento del especificador. Algunos especificadores de conversión tienen una forma modificada en la que se inserta un carácter modificador
E
o
O
después del carácter
%
. Cada especificador de conversión se reemplaza por los caracteres apropiados en la salida como se describe a continuación.
A menos que se especifique lo contrario, si el
chrono-spec
está vacío, el objeto chrono se formatea como si se
transmitiera
a un objeto
os
de tipo
std::
basic_ostringstream
<
CharT
>
con la configuración regional de formato (una de
std::
locale
::
classic
(
)
, el objeto
std::locale
pasado, y
std::
locale
::
global
(
)
)
establecida
y copiando
os.
str
(
)
al búfer de salida con relleno adicional y ajustes según los especificadores de formato.
Los siguientes especificadores de formato están disponibles:
|
Especificador de
conversión |
Explicación | |
|---|---|---|
%%
|
Escribe un carácter
%
literal.
|
|
%n
|
Escribe un carácter de nueva línea. | |
%t
|
Escribe un carácter de tabulación horizontal. | |
| Hora del día | ||
%H
%OH
|
Escribe la hora (reloj de 24 horas) como número decimal. Si el resultado es un solo dígito, se antepone un 0.
El comando modificado
|
|
%I
%OI
|
Escribe la hora (reloj de 12 horas) como número decimal. Si el resultado es un solo dígito, se antepone un 0.
El comando modificado
|
|
%M
%OM
|
Escribe el minuto como número decimal. Si el resultado es un solo dígito, se antepone un 0.
El comando modificado
|
|
%S
%OS
|
Escribe el segundo como número decimal. Si el número de segundos es menor que 10, el resultado se antepone con 0.
Si la precisión de la entrada no puede representarse exactamente con segundos, entonces el formato es un número decimal de punto flotante con formato fijo y una precisión que coincida con la precisión de la entrada (o con una precisión de microsegundos si la conversión a segundos decimales de punto flotante no puede realizarse dentro de 18 dígitos fraccionarios). El carácter para el punto decimal se localiza según la configuración regional.
El comando modificado
|
|
%p
|
Escribe el equivalente de la configuración regional de las designaciones AM/PM asociadas con un reloj de 12 horas. | |
%R
|
Equivalente a
"%H:%M"
.
|
|
%T
|
Equivalente a
"%H:%M:%S"
.
|
|
%r
|
Escribe la hora del reloj de 12 horas de la configuración regional. | |
%X
%EX
|
Escribe la representación de tiempo de la configuración regional.
El comando modificado
|
|
| Recuento de duración | ||
%Q
|
Escribe el recuento de ticks de la duración, es decir, el valor obtenido mediante count() . | |
%q
|
Escribe el sufijo de unidad de la duración, como se especifica en operator<<() . | |
Los siguientes especificadores son reconocidos, pero causarán que se lance std::format_error :
|
Especificador de
conversión |
Explicación | |
|---|---|---|
| Año | ||
%C
%EC
|
Escribe el año dividido por 100 usando división por piso. Si el resultado es un dígito decimal único, se le antepone un 0.
El comando modificado
|
|
%y
%Oy
%Ey
|
Escribe los últimos dos dígitos decimales del año. Si el resultado es un solo dígito, se le antepone un 0.
El comando modificado
El comando modificado
|
|
%Y
%EY
|
Escribe el año como un número decimal. Si el resultado tiene menos de cuatro dígitos, se rellena a la izquierda con 0 hasta cuatro dígitos.
El comando modificado
|
|
| Mes | ||
%b
%h
|
Escribe el nombre abreviado del mes de la configuración regional. | |
%B
|
Escribe el nombre completo del mes de la configuración regional. | |
%m
%Om
|
Escribe el mes como un número decimal (enero es
01
). Si el resultado es un solo dígito, se le antepone un 0.
El comando modificado
|
|
| Día | ||
%d
%Od
|
Escribe el día del mes como un número decimal. Si el resultado es un solo dígito decimal, se le antepone un 0.
El comando modificado
|
|
%e
%Oe
|
Escribe el día del mes como un número decimal. Si el resultado es un solo dígito decimal, se le antepone un espacio.
El comando modificado
|
|
| Día de la semana | ||
%a
|
Escribe el nombre abreviado del día de la semana de la configuración regional. | |
%A
|
Escribe el nombre completo del día de la semana de la configuración regional. | |
%u
%Ou
|
Escribe el día de la semana ISO como un número decimal (1-7), donde el lunes es
1
.
El comando modificado
|
|
%w
%Ow
|
Escribe el día de la semana como un número decimal (0-6), donde el domingo es
0
.
El comando modificado
|
|
| Año basado en semanas ISO 8601 | ||
|
En ISO 8601 las semanas comienzan el lunes y la primera semana del año debe cumplir los siguientes requisitos:
|
||
%g
|
Escribe los últimos dos dígitos decimales del año basado en semanas ISO 8601. Si el resultado es un solo dígito, se le antepone un 0. | |
%G
|
Escribe el año basado en semanas ISO 8601 como un número decimal. Si el resultado tiene menos de cuatro dígitos, se rellena a la izquierda con 0 hasta cuatro dígitos. | |
%V
%OV
|
Escribe la semana ISO 8601 del año como un número decimal. Si el resultado es un solo dígito, se le antepone un 0.
El comando modificado
|
|
| Semana/día del año | ||
%j
|
Escribe el día del año como un número decimal (1 de enero es
001
). Si el resultado tiene menos de tres dígitos, se rellena a la izquierda con 0 hasta tres dígitos.
|
|
%U
%OU
|
Escribe el número de semana del año como un número decimal. El primer domingo del año es el primer día de la semana 01. Los días del mismo año anteriores a ese están en la semana 00. Si el resultado es un solo dígito, se le antepone un 0.
El comando modificado
|
|
%W
%OW
|
Escribe el número de semana del año como un número decimal. El primer lunes del año es el primer día de la semana 01. Los días del mismo año anteriores a ese están en la semana 00. Si el resultado es un solo dígito, se le antepone un 0.
El comando modificado
|
|
| Fecha | ||
%D
|
Equivalente a
"%m/%d/%y"
.
|
|
%F
|
Equivalente a
"%Y-%m-%d"
.
|
|
%x
%Ex
|
Escribe la representación de fecha de la configuración regional.
El comando modificado
|
|
| Zona horaria | ||
%z
%Ez
%Oz
|
Escribe el desplazamiento desde UTC en formato ISO 8601. Por ejemplo
-0430
se refiere a 4 horas 30 minutos detrás de UTC. Si el desplazamiento es cero, se usa
+0000
.
Los comandos modificados
|
|
%Z
|
Escribe la abreviatura de la zona horaria. | |
| Misceláneos | ||
%c
%Ec
|
Escribe la representación de fecha y hora de la configuración regional.
El comando modificado
|
|
Ejemplo
#include <chrono> #include <print> using namespace std::chrono_literals; int main() { auto du{3h + 2min + 1s}; std::print( "Duration is:\n" "{}\n" "{:%T}\n" "{:%H:%M:%S}\n" "{:%H hours %M minutes %S seconds}\n", du, du, du, du); }
Salida posible:
Duration is: 10921s 03:02:01 03:02:01 03 hours 02 minutes 01 seconds
Véase también
|
(C++20)
|
almacena la representación formateada de los argumentos en una nueva cadena
(plantilla de función) |