Namespaces
Variants

std:: formatter <std::chrono::year>

From cppreference.net
Definido en el encabezado <chrono>
template < class CharT >
struct formatter < std:: chrono :: year , CharT > ;

Especialización de std::formatter que define las reglas de formato para un std::chrono::year .

La especialización de std::formatter normalmente no se accede directamente, sino que se utiliza a través de las 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álido 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 L no 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,
  • de lo contrario ( L está 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 cadena literal (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 ( ) ) establecido 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.
Año
%C
%EC
Escribe el año dividido por 100 usando división truncada. Si el resultado es un solo dígito decimal, se le antepone un 0.

El comando modificado %EC escribe la representación alternativa del siglo según la configuración regional.

%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 %Oy escribe la representación alternativa según la configuración regional.

El comando modificado %Ey escribe la representación alternativa del desplazamiento desde %EC (solo año) según la configuración regional.

%Y
%EY
Escribe el año como número decimal. Si el resultado tiene menos de cuatro dígitos, se rellena con ceros a la izquierda hasta cuatro dígitos.

El comando modificado %EY escribe la representación alternativa completa del año según la configuración regional.

Los siguientes especificadores son reconocidos, pero causarán que se lance std::format_error :

Especificador
de conversión
Explicación
Mes
%b
%h
Escribe el nombre abreviado del mes según la configuración regional.
%B Escribe el nombre completo del mes según 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 %Om escribe la representación alternativa de la configuración regional.

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 %Od escribe la representación alternativa de la configuración regional.

%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 %Oe escribe la representación alternativa de la configuración regional.

Día de la semana
%a Escribe el nombre abreviado del día de la semana según la configuración regional.
%A Escribe el nombre completo del día de la semana en 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 %Ou escribe la representación alternativa de la configuración regional.

%w
%Ow
Escribe el día de la semana como un número decimal (0-6), donde el domingo es 0 .

El comando modificado %Ow escribe la representación alternativa de la configuración regional.

Año basado en semanas ISO 8601

En la norma ISO 8601 las semanas comienzan el lunes y la primera semana del año debe cumplir los siguientes requisitos:

  • Incluye el 4 de enero
  • Incluye el primer jueves del año
%g Escribe los dos últimos dígitos decimales del año basado en semanas ISO 8601. Si el resultado es un solo dígito, se 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 número decimal. Si el resultado es un solo dígito, se antepone un 0.

El comando modificado %OV escribe la representación alternativa de la configuración regional.

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 con 0 a la izquierda 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 %OU escribe la representación alternativa de la configuración regional.

%W
%OW
Escribe el número de la 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 %OW escribe la representación alternativa de la configuración regional.

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 %Ex produce la representación de fecha alternativa de la configuración regional.

Hora del día
%H
%OH
Escribe la hora (reloj de 24 horas) como un número decimal. Si el resultado es un solo dígito, se le antepone un 0.

El comando modificado %OH escribe la representación alternativa de la configuración regional.

%I
%OI
Escribe la hora (reloj de 12 horas) como un número decimal. Si el resultado es un solo dígito, se le antepone un 0.

El comando modificado %OI escribe la representación alternativa de la configuración regional.

%M
%OM
Escribe el minuto como un número decimal. Si el resultado es un solo dígito, se antepone un 0.

El comando modificado %OM escribe la representación alternativa de la configuración regional.

%S
%OS
Escribe el segundo como un 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 de punto flotante decimal con formato fijo y una precisión que coincide con la precisión de la entrada (o con 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 %OS escribe la representación alternativa de la configuración regional.

%p Escribe el equivalente local 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 hora de la configuración regional.

El comando modificado %EX escribe la representación de hora alternativa de la configuración regional.

Conteo 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<<() .
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, +0000 se utiliza.

Los comandos modificados %Ez y %Oz insertan un : entre las horas y los minutos (por ejemplo, -04:30 ).

%Z Escribe la abreviatura de la zona horaria.
Miscelánea
%c
%Ec
Escribe la representación de fecha y hora de la configuración regional.

El comando modificado %Ec escribe la representación alternativa de fecha y hora de la configuración regional.

Ejemplo

Véase también

(C++20)
almacena la representación formateada de los argumentos en una nueva cadena
(plantilla de función)