Namespaces
Variants

std:: formatter <std::chrono::year_month_weekday_last>

From cppreference.net
Definido en el encabezado <chrono>
template < class CharT >
struct formatter < std:: chrono :: year_month_weekday_last , CharT > ;
(desde C++20)

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

La especialización de std::formatter normalmente no se accede directamente, sino que se utiliza a través de funciones de formato .

Contenidos

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 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 alguno,
  • 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 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.

El chrono-spec consiste en uno o más especificadores de conversión y caracteres ordinarios (distintos de { , } , y % ). Un 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 ( ) ) imbuido 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 por piso. Si el resultado es un dígito decimal único, se antepone con 0.

El comando modificado %EC escribe la representación alternativa del siglo de 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 antepone con 0.

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

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

%Y
%EY
Escribe el año como 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 %EY escribe la representación alternativa completa del año de la configuración regional.

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 número decimal (enero es 01 ). Si el resultado es un solo dígito, se antepone con 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 número decimal. Si el resultado es un solo dígito decimal, se antepone con 0.

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

%e
%Oe
Escribe el día del mes como número decimal. Si el resultado es un solo dígito decimal, se antepone con 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 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 número decimal (1-7), donde 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 número decimal (0-6), donde domingo es 0 .

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

Año basado en semana ISO 8601

En 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 últimos dos dígitos decimales del año basado en semana ISO 8601. Si el resultado es un solo dígito, se antepone con 0.
%G Escribe el año basado en semana ISO 8601 como 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 con 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 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 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 antepone con 0.

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

%W
%OW
Escribe el número de semana del año como 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 antepone con 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.

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

Especificador de
conversión
Explicación
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 %OH escribe la representación alternativa de la configuración regional.

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

%M
%OM
Escribe el minuto como 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 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 de la entrada (o con precisión de microsegundos si la conversión a segundos decimales de punto flotante no puede hacerse 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 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 hora de la configuración regional.

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

Conteo de duración
%Q Escribe el conteo 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, se usa +0000 .

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

%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 %Ec escribe la representación alternativa de fecha y hora de la configuración regional.

Ejemplo

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
P2372R3 C++20 formatter utilizaba la configuración regional global o la configuración regional pasada se utiliza la configuración regional predeterminada "C" cuando L está ausente

Véase también

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