std::formatter<std::chrono::day>
| 定义于头文件  <chrono> | ||
| template< class CharT > struct formatter<std::chrono::day, CharT>; | ||
这是 std::formatter 的特化,它定义了 std::chrono::day 的格式化规则。
此 std::formatter 特化通常不直接访问,而是通过格式化函数使用。
[编辑] 格式说明
格式规范的形式为
| 填充与对齐 (可选) 宽度 (可选) 精度 (可选) L(可选) 时间规范 (可选) | |||||||||
填充与对齐、宽度 和 精度 的含义与标准格式说明相同。精度 仅对表示类型 Rep 为浮点类型的 std::chrono::duration 类型有效,否则将抛出 std::format_error。
用于格式化的区域设置确定如下:
- 如果格式规范中不存在 L,则使用默认的 "C" 区域设置,
- 否则,如果传递给格式化函数,则使用 std::locale 所表示的区域设置,
- 否则(存在 L但没有将 std::locale 传递给格式化函数),则使用全局区域设置。
如果(普通或宽)字符串字面量编码是 Unicode 编码形式且本地环境属于实现定义的本地环境集,则每个依赖于本地环境的替换都将执行,如同替换字符序列被转换为字面量编码一样。
时间规范 由一个或多个转换说明符和普通字符(除了 {、} 和 %)组成。一个 时间规范 必须以转换说明符开始。所有普通字符都原样写入输出。每个未修改的转换说明符都以 % 字符开头,后跟一个字符,该字符确定说明符的行为。一些转换说明符具有修改形式,其中在 % 字符之后插入 E 或 O 修饰符字符。每个转换说明符都按如下所述替换为输出中的相应字符。
除非另有说明,如果 chrono-spec 为空,则 chrono 对象将格式化,如同通过将其流式传输到类型为 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 | 将月份作为十进制数字写入(一月为 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) | 将参数的格式化表示存储在新字符串中 (函数模板) | 


