std:: formatter <std::chrono::year>
|
Определено в заголовочном файле
<chrono>
|
||
|
template
<
class
CharT
>
struct formatter < std:: chrono :: year , CharT > ; |
||
Специализация std::formatter , которая определяет правила форматирования для std::chrono::year .
Специализация std::formatter обычно не используется напрямую, а применяется через функции форматирования .
Спецификация формата
Спецификация формата имеет вид
fill-and-align
(необязательно)
width
(необязательно)
precision
(необязательно)
L
(необязательно)
chrono-spec
(необязательно)
|
|||||||||
fill-and-align
,
width
и
precision
имеют то же значение, что и в
стандартной спецификации формата
.
precision
действительна только для типов
std::chrono::duration
, где тип представления
Rep
является типом с плавающей запятой, в противном случае выбрасывается
std::format_error
.
Локаль, используемая для форматирования, определяется следующим образом:
-
локаль по умолчанию
"C"
если
Lотсутствует в спецификации формата, - иначе локаль, обозначенная std::locale переданным в функцию форматирования, если таковой имеется,
-
иначе (
Lприсутствует, но std::locale не передан в функцию форматирования), глобальная локаль.
Если кодировка (обычного или широкого) строкового литерала является формой кодировки Unicode и локаль входит в определённый реализацией набор локалей, каждая замена, зависящая от локали, выполняется так, как если бы последовательность заменяемых символов была преобразована в кодировку литерала.
chrono-spec
состоит из одного или нескольких спецификаторов преобразования и обычных символов (кроме
{
,
}
и
%
).
chrono-spec
должен начинаться со спецификатора преобразования. Все обычные символы записываются в вывод без изменений. Каждый немодифицированный спецификатор преобразования начинается с символа
%
, за которым следует символ, определяющий поведение спецификатора. Некоторые спецификаторы преобразования имеют модифицированную форму, в которой после символа
%
вставляется модифицирующий символ
E
или
O
. Каждый спецификатор преобразования заменяется соответствующими символами в выводе, как описано ниже.
Если не указано иное, если
chrono-spec
пуст, chrono-объект форматируется как если бы он был
выведен в поток
в объект
os
типа
std::
basic_ostringstream
<
CharT
>
с локализацией форматирования (одной из
std::
locale
::
classic
(
)
, переданного объекта
std::locale
и
std::
locale
::
global
(
)
)
установленной
и копированием
os.
str
(
)
в выходной буфер с дополнительным заполнением и корректировками согласно спецификаторам формата.
Доступны следующие спецификаторы формата:
|
Спецификатор
преобразования |
Объяснение | |
|---|---|---|
%%
|
Записывает символ
%
.
|
|
%n
|
Записывает символ новой строки. | |
%t
|
Записывает символ горизонтальной табуляции. | |
| Год | ||
%C
%EC
|
Записывает год, делённый на 100, используя целочисленное деление с округлением вниз. Если результат представляет собой одну десятичную цифру, она дополняется префиксом 0.
Модифицированная команда
|
|
%y
%Oy
%Ey
|
Записывает последние две десятичные цифры года. Если результат представляет собой одну цифру, она дополняется префиксом 0.
Модифицированная команда
Модифицированная команда
|
|
%Y
%EY
|
Записывает год в виде десятичного числа. Если результат содержит менее четырёх цифр, он дополняется слева нулями до четырёх цифр.
Модифицированная команда
|
|
Следующие спецификаторы распознаются, но приведут к выбросу исключения std::format_error :
|
Спецификатор
преобразования |
Объяснение | |
|---|---|---|
| Месяц | ||
%b
%h
|
Выводит сокращенное название месяца в соответствии с локализацией. | |
%B
|
Записывает полное название месяца в соответствии с локалью. | |
%m
%Om
|
Записывает месяц в виде десятичного числа (январь - это
01
). Если результат представляет собой одну цифру, она дополняется нулём.
Модифицированная команда
|
|
| День | ||
%d
%Od
|
Записывает день месяца в виде десятичного числа. Если результат представляет собой одну десятичную цифру, она дополняется нулём в начале.
Модифицированная команда
|
|
%e
%Oe
|
Записывает день месяца в виде десятичного числа. Если результат представляет собой одну десятичную цифру, она предваряется пробелом.
Модифицированная команда
|
|
| День недели | ||
%a
|
Записывает сокращенное название дня недели в текущей локали. | |
%A
|
Записывает полное название дня недели в текущей локали. | |
%u
%Ou
|
Записывает день недели по ISO в виде десятичного числа (1-7), где понедельник -
1
.
Модифицированная команда
|
|
%w
%Ow
|
Записывает день недели в виде десятичного числа (0-6), где воскресенье соответствует
0
.
Модифицированная команда
|
|
| ISO 8601 недельный год | ||
|
В стандарте ISO 8601 недели начинаются с понедельника, и первая неделя года должна удовлетворять следующим требованиям:
|
||
%g
|
Записывает последние две десятичные цифры ISO 8601 недельного года. Если результат представляет собой одну цифру, она дополняется нулём в начале. | |
%G
|
Записывает ISO 8601 недельный год в виде десятичного числа. Если результат содержит менее четырех цифр, он дополняется слева нулями до четырех цифр. | |
%V
%OV
|
Записывает неделю года по стандарту ISO 8601 в виде десятичного числа. Если результат представляет собой одну цифру, она дополняется ведущим нулём.
Модифицированная команда
|
|
| Неделя/день года | ||
%j
|
Записывает день года в виде десятичного числа (1 января это
001
). Если результат содержит менее трёх цифр, он дополняется слева нулями до трёх цифр.
|
|
%U
%OU
|
Записывает номер недели года в виде десятичного числа. Первое воскресенье года является первым днем недели 01. Дни того же года, предшествующие этому, относятся к неделе 00. Если результат представляет собой одну цифру, она дополняется ведущим нулем.
Модифицированная команда
|
|
%W
%OW
|
Записывает номер недели года в виде десятичного числа. Первый понедельник года является первым днем недели 01. Дни того же года, предшествующие этому, относятся к неделе 00. Если результат представляет собой одну цифру, она дополняется ведущим нулем.
Модифицированная команда
|
|
| Дата | ||
%D
|
Эквивалентно
"%m/%d/%y"
.
|
|
%F
|
Эквивалентно
"%Y-%m-%d"
.
|
|
%x
%Ex
|
Записывает представление даты в локали.
Модифицированная команда
|
|
| Время суток | ||
%H
%OH
|
Записывает час (24-часовой формат) в виде десятичного числа. Если результат представляет собой одну цифру, она дополняется ведущим нулём.
Модифицированная команда
|
|
%I
%OI
|
Записывает час (12-часовой формат) в виде десятичного числа. Если результат представляет собой одну цифру, она дополняется нулём.
Модифицированная команда
|
|
%M
%OM
|
Записывает минуту в виде десятичного числа. Если результат представляет собой одну цифру, она дополняется нулём в начале.
Модифицированная команда
|
|
%S
%OS
|
Записывает секунды в виде десятичного числа. Если количество секунд меньше 10, результат дополняется ведущим нулём.
Если точность входных данных не может быть точно представлена в секундах, то используется формат десятичного числа с плавающей точкой с фиксированным форматом и точностью, соответствующей точности входных данных (или с точностью до микросекунд, если преобразование в десятичные секунды с плавающей точкой не может быть выполнено в пределах 18 дробных цифр). Символ десятичной точки локализуется в соответствии с локалью.
Модифицированная команда
|
|
%p
|
Записывает локальный эквивалент обозначений AM/PM, связанных с 12-часовым форматом времени. | |
%R
|
Эквивалентно
"%H:%M"
.
|
|
%T
|
Эквивалентно
"%H:%M:%S"
.
|
|
%r
|
Выводит 12-часовое время в соответствии с локалью. | |
%X
%EX
|
Записывает представление времени в локали.
Модифицированная команда
|
|
| Подсчет длительности | ||
%Q
|
Записывает количество тиков длительности, т.е. значение, полученное через count() . | |
%q
|
Записывает суффикс единицы измерения длительности, как указано в operator<<() . | |
| Часовой пояс | ||
%z
%Ez
%Oz
|
Записывает смещение от UTC в формате ISO 8601. Например,
-0430
означает 4 часа 30 минут позади UTC. Если смещение равно нулю,
используется
+0000
.
Модифицированные команды
|
|
%Z
|
Записывает сокращение часового пояса. | |
| Разное | ||
%c
%Ec
|
Выводит представление даты и времени в локали.
Модифицированная команда
|
|
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++20)
|
сохраняет форматированное представление аргументов в новой строке
(шаблон функции) |