名稱空間
變體
操作

std::formatter<std::chrono::local_info>

來自 cppreference.com
< cpp‎ | chrono‎ | local_info
 
 
 
std::chrono::local_info
非成員函式
輔助類
formatter<std::chrono::local_info>
 
定義於標頭檔案 <chrono>
template< class CharT >
struct formatter<std::chrono::local_info, CharT>;
(C++20 起)

std::formatter 的特化,定義了 std::chrono::local_info 的格式化規則。

std::formatter 的特化通常不直接訪問,而是透過格式化函式使用。

[編輯] 格式說明

格式規範的形式為

fill-and-align (可選) width (可選) precision (可選) L(可選) chrono-spec (可選)

fill-and-alignwidthprecision 的含義與標準格式說明中相同。precision 僅對錶示型別 Rep 為浮點型別的 std::chrono::duration 型別有效,否則丟擲 std::format_error

用於格式化的區域設定確定如下:

  • 如果格式規範中不存在 L,則使用預設的 "C" 區域設定,
  • 否則,如果傳遞給格式化函式,則使用 std::locale 所表示的區域設定,
  • 否則(存在 L 但沒有將 std::locale 傳遞給格式化函式),則使用全域性區域設定。

如果(普通或寬)字串字面量編碼是 Unicode 編碼形式,並且區域設定屬於實現定義的區域設定集合,則每個依賴於區域設定的替換都將執行,如同替換字元序列被轉換為字面量編碼一樣。

chrono-spec 由一個或多個轉換說明符和普通字元(除了 {}%)組成。chrono-spec 必須以轉換說明符開頭。所有普通字元都原樣寫入輸出。每個未修改的轉換說明符以 % 字元開頭,後跟一個決定說明符行為的字元。某些轉換說明符具有修改形式,其中在 % 字元後插入 EO 修飾符字元。每個轉換說明符都按如下所述替換為輸出中的適當字元。

除非另有說明,如果 chrono-spec 為空,則 chrono 物件將如同透過將其流式傳輸到型別為 std::basic_ostringstream<CharT> 的物件 os 中進行格式化,並使用格式化區域設定(std::locale::classic()、傳入的 std::locale 物件和 std::locale::global() 之一)填充,並將 os.str() 複製到輸出緩衝區,並根據格式說明符進行額外的填充和調整。

以下格式說明符可用:

轉換
說明符
解釋
%% 寫入字面量 % 字元。
%n 寫入換行符。
%t 寫入水平製表符。
時區
%z
%Ez
%Oz
以 ISO 8601 格式寫入與 UTC 的偏移量。例如 -0430 表示比 UTC 晚 4 小時 30 分鐘。如果偏移量為零,則使用 +0000

修改後的命令 %Ez%Oz 在小時和分鐘之間插入 :(例如,-04:30)。

%Z 寫入時區縮寫。

以下說明符可識別,但會丟擲 std::format_error

轉換
說明符
解釋
%C
%EC
使用向下取整除法寫入年份除以 100 的結果。如果結果是一個十進位制數字,則在其前面加上 0。

修改後的命令 %EC 寫入區域設定的世紀的替代表示。

%y
%Oy
%Ey
寫入年份的最後兩位十進位制數字。如果結果是一位數字,則在其前面加上 0。

修改後的命令 %Oy 寫入區域設定的替代表示。

修改後的命令 %Ey 寫入區域設定的從 %EC 偏移量(僅年份)的替代表示。

%Y
%EY
將年份作為十進位制數字寫入。如果結果小於四位數字,則在其前面用 0 填充到四位數字。

修改後的命令 %EY 寫入區域設定的替代完整年份表示。

%b
%h
寫入區域設定的縮寫月份名稱。
%B 寫入區域設定的完整月份名稱。
%m
%Om
將月份作為十進位制數字寫入(一月為 01)。如果結果是一個數字,則在其前面加上 0。

修改後的命令 %Om 寫入區域設定的替代表示。

%d
%Od
將月份中的日期作為十進位制數字寫入。如果結果是一個十進位制數字,則在其前面加上 0。

修改後的命令 %Od 寫入區域設定的替代表示。

%e
%Oe
將月份中的日期作為十進位制數字寫入。如果結果是一個十進位制數字,則在其前面加上一個空格。

修改後的命令 %Oe 寫入區域設定的替代表示。

星期幾
%a 寫入區域設定的縮寫工作日名稱。
%A 寫入區域設定的完整工作日名稱。
%u
%Ou
將 ISO 工作日作為十進位制數字寫入 (1-7),其中星期一為 1

修改後的命令 %Ou 寫入區域設定的替代表示。

%w
%Ow
將工作日作為十進位制數字寫入 (0-6),其中星期日為 0

修改後的命令 %Ow 寫入區域設定的替代表示。

ISO 8601 基於周的年份

在ISO 8601中,周以星期一開始,一年的第一週必須滿足以下要求

  • 包含1月4日
  • 包含一年中的第一個星期四
%g 寫入 ISO 8601 基於周的年份的最後兩位十進位制數字。如果結果是一位數字,則在其前面加上 0。
%G 將 ISO 8601 基於周的年份作為十進位制數字寫入。如果結果小於四位數字,則在其前面用 0 填充到四位數字。
%V
%OV
將 ISO 8601 年份的週數作為十進位制數字寫入。如果結果是一個數字,則在其前面加上 0。

修改後的命令 %OV 寫入區域設定的替代表示。

年份中的周/天
%j 將年份中的日期作為十進位制數字寫入(1 月 1 日為 001)。如果結果小於三位數字,則在其前面用 0 填充到三位數字。
%U
%OU
將年份的週數作為十進位制數字寫入。年份的第一個星期日是第 01 周的第一天。在此之前的同年日期屬於第 00 周。如果結果是一個數字,則在其前面加上 0。

修改後的命令 %OU 寫入區域設定的替代表示。

%W
%OW
將年份的週數作為十進位制數字寫入。年份的第一個星期一是第 01 周的第一天。在此之前的同年日期屬於第 00 周。如果結果是一個數字,則在其前面加上 0。

修改後的命令 %OW 寫入區域設定的替代表示。

日期
%D 等效於"%m/%d/%y"
%F 等同於 "%Y-%m-%d"
%x
%Ex
寫入區域設定的日期表示。

修改後的命令 %Ex 生成區域設定的替代日期表示。

日間時間
%H
%OH
將小時(24 小時制)作為十進位制數字寫入。如果結果是一個數字,則在其前面加上 0。

修改後的命令 %OH 寫入區域設定的替代表示。

%I
%OI
將小時(12 小時制)作為十進位制數字寫入。如果結果是一個數字,則在其前面加上 0。

修改後的命令 %OI 寫入區域設定的替代表示。

%M
%OM
將分鐘作為十進位制數字寫入。如果結果是一個數字,則在其前面加上 0。

修改後的命令 %OM 寫入區域設定的替代表示。

%S
%OS
將秒作為十進位制數字寫入。如果秒數小於 10,則結果前面加上 0。

如果輸入的精度無法用秒精確表示,則格式為固定格式的十進位制浮點數,精度與輸入精度匹配(如果轉換為浮點十進位制秒無法在 18 位小數內完成,則為微秒精度)。小數點字元根據區域設定進行本地化。

修改後的命令 %OS 寫入區域設定的替代表示。

%p 寫入區域設定中與 12 小時制相關聯的 AM/PM 表示。
%R 等效於"%H:%M"
%T 等效於"%H:%M:%S"
%r 寫入區域設定的 12 小時制時間。
%X
%EX
寫入區域設定的時間表示。

修改後的命令 %EX 寫入區域設定的替代時間表示。

持續時間計數
%Q 寫入持續時間的滴答計數,即透過 count() 獲得的值。
%q 寫入持續時間的單位字尾,如 operator<<() 中指定。
雜項
%c
%Ec
寫入區域設定的日期和時間表示。

修改後的命令 %Ec 寫入區域設定的替代日期和時間表示。

[編輯] 示例

[編輯] 參閱

(C++20)
將引數的格式化表示儲存在新字串中
(函式模板) [編輯]