std:: formatter <std::chrono::day>
|
定义于头文件
<chrono>
|
||
|
template
<
class
CharT
>
struct formatter < std:: chrono :: day , CharT > ; |
||
针对 std::formatter 的特化版本,用于定义 std::chrono::day 的格式化规则。
std::formatter 特化通常不直接访问,而是通过 格式化函数 使用。
格式规范
格式规范具有以下形式
填充与对齐
(可选)
宽度
(可选)
精度
(可选)
L
(可选)
时间规范
(可选)
|
|||||||||
fill-and-align
、
width
和
precision
的含义与
标准格式规范
中的定义相同。
precision
仅当
std::chrono::duration
类型的表示类型
Rep
为浮点类型时有效,否则将抛出
std::format_error
。
用于格式化的区域设置按以下方式确定:
-
若格式规范中不存在
L,则使用默认的 "C" 区域设置, - 否则,使用传递给格式化函数的 std::locale 所指示的区域设置(如果存在),
-
否则(存在
L但未向格式化函数传递 std::locale ),则使用全局区域设置。
如果 (普通或宽)字符串字面量编码 是Unicode编码形式且区域设置属于实现定义的区域设置集合,则每个依赖于区域设置的替换操作都会执行,如同替换字符序列被转换为字面量编码。
chrono-spec
由一个或多个转换说明符以及普通字符(除
{
、
}
和
%
外)组成。
chrono-spec
必须以转换说明符开头。所有普通字符会不经修改地写入输出。每个未修改的转换说明符以
%
字符开头,后接一个决定说明符行为的字符。部分转换说明符具有修改形式,即在
%
字符后插入
E
或
O
修饰符字符。如下所述,每个转换说明符会被替换为输出中的相应字符。
除非另有说明,若
chrono-spec
为空,则时间对象的格式化方式等同于将其
流式输出
到类型为
std::
basic_ostringstream
<
CharT
>
的对象
os
,该对象已通过格式化区域设置(包括
std::
locale
::
classic
(
)
、传入的
std::locale
对象以及
std::
locale
::
global
(
)
之一)进行
区域设置植入
,并将
os.
str
(
)
复制到输出缓冲区,同时根据格式说明符进行额外填充和对齐调整。
以下格式说明符可用:
|
转换
说明符 |
说明 | |
|---|---|---|
%%
|
写入字面量
%
字符。
|
|
%n
|
写入换行符。 | |
%t
|
写入水平制表符。 | |
| 日期 | ||
%d
%Od
|
将月份中的日期以十进制数字形式写入。若结果为单个十进制数字,则前缀补0。
修改命令
|
|
%e
%Oe
|
将月份中的日期以十进制数字形式写入。若结果为单个十进制数字,则前缀补空格。
修改命令
|
|
以下标识符可被识别,但会引发 std::format_error 异常:
|
转换
说明符 |
说明 | |
|---|---|---|
| 年份 | ||
%C
%EC
|
输出年份除以100的下取整结果。若结果为单个十进制数字,则前缀补0。
修改命令
|
|
%y
%Oy
%Ey
|
输出年份的最后两位十进制数字。若结果为单个数字,则前缀补0。
修改命令
修改命令
|
|
%Y
%EY
|
以十进制数字输出年份。若结果不足四位,左侧补0至四位。
修改命令
|
|
| 月份 | ||
%b
%h
|
输出区域设置的月份缩写名称。 | |
%B
|
输出区域设置的月份完整名称。 | |
%m
%Om
|
以十进制数字输出月份(1月为
01
)。若结果为单个数字,则前缀补0。
修改命令
|
|
| 星期 | ||
%a
|
输出区域设置的星期缩写名称。 | |
%A
|
输出区域设置的星期完整名称。 | |
%u
%Ou
|
以十进制数字输出ISO星期(1-7),其中周一为
1
。
修改命令
|
|
%w
%Ow
|
以十进制数字输出星期(0-6),其中周日为
0
。
修改命令
|
|
| ISO 8601 基于周的年份 | ||
|
ISO 8601 标准中每周从周一开始,且年份的第一周需满足以下要求:
|
||
%g
|
输出ISO 8601 基于周的年份的最后两位十进制数字。若结果为单个数字,则前缀补0。 | |
%G
|
以十进制数字输出ISO 8601 基于周的年份。若结果不足四位,左侧补0至四位。 | |
%V
%OV
|
以十进制数字输出ISO 8601 周数。若结果为单个数字,则前缀补0。
修改命令
|
|
| 年内的周/日 | ||
%j
|
以十进制数字输出年内第几天(1月1日为
001
)。若结果不足三位,左侧补0至三位。
|
|
%U
%OU
|
以十进制数字输出年内周数。年份的第一个周日为第01周的第一天。同年中在此之前的日子属于第00周。若结果为单个数字,则前缀补0。
修改命令
|
|
%W
%OW
|
以十进制数字输出年内周数。年份的第一个周一为第01周的第一天。同年中在此之前的日子属于第00周。若结果为单个数字,则前缀补0。
修改命令
|
|
| 日期 | ||
%D
|
等价于
"%m/%d/%y"
。
|
|
%F
|
等价于
"%Y-%m-%d"
。
|
|
%x
%Ex
|
输出区域设置的日期表示形式。
修改命令
|
|
| 一天中的时间 | ||
%H
%OH
|
以十进制数字输出小时(24小时制)。若结果为单个数字,则前缀补0。
修改命令
|
|
%I
%OI
|
以十进制数字输出小时(12小时制)。若结果为单个数字,则前缀补0。
修改命令
|
|
%M
%OM
|
以十进制数字输出分钟。若结果为单个数字,则前缀补0。
修改命令
|
|
%S
%OS
|
以十进制数字输出秒数。若秒数小于10,则结果前缀补0。
若输入的精度无法用秒精确表示,则格式为固定格式的十进制浮点数,其精度与输入精度匹配(若无法在18位小数内转换为浮点十进制秒,则使用微秒精度)。小数点字符根据区域设置进行本地化。
修改命令
|
|
%p
|
输出与12小时制相关的区域设置等效的AM/PM标识。 | |
%R
|
等价于
"%H:%M"
。
|
|
%T
|
等价于
"%H:%M:%S"
。
|
|
%r
|
输出区域设置的12小时制时间。 | |
%X
%EX
|
输出区域设置的时间表示形式。
修改命令
|
|
| 时长计数 | ||
%Q
|
输出时长的滴答计数,即通过 count() 获得的值。 | |
%q
|
输出时长的单位后缀,如 operator<<() 所指定。 | |
| 时区 | ||
%z
%Ez
%Oz
|
以ISO 8601格式输出与UTC的偏移量。例如
-0430
表示比UTC晚4小时30分钟。若偏移量为零,则使用
+0000
。
修改命令
|
|
%Z
|
输出时区缩写。 | |
| 其他 | ||
%c
%Ec
|
输出区域设置的日期和时间表示形式。
修改命令
|
|
示例
|
本节内容不完整
原因:缺少示例 |
参见
|
(C++20)
|
将参数的格式化表示存储于新字符串中
(函数模板) |