名前空間
変種
操作

std::formatter<std::chrono::duration>

提供: cppreference.com
< cpp‎ | chrono‎ | duration
 
 
 
日付と時間のユーティリティ
(C++11)
(C++11)
時計
(C++20)
                                                  
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
カレンダー
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
タイムゾーン
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
C スタイルの日付と時間
 
 
ヘッダ <chrono> で定義
template<class Rep, class Period, class CharT>
struct formatter<std::chrono::duration<Rep, Period>, CharT>;

std::chrono::duration のための書式化ルールを定義する std::formatter の特殊化です。

std::formatter の特殊化は、通常、直接アクセスされず、書式化関数を通して使用されます。

[編集] 書式指定

書式指定は以下の形式を持ちます。

fill-and-align(オプション) width(オプション) precision(オプション) chrono-spec(オプション)

fill-and-alignwidth、および precision標準の書式指定と同じ意味を持ちます。 precision は表現型 Rep が浮動小数点型である std​::​chrono​::​duration に対してのみ有効であり、そうでなければ std::format_error が投げられます。

chrono-spec は0個以上の変換指定子と ({ および } 以外の) 普通の文字から構成されます。 普通の文字はすべて変更されずに出力に書き込まれます。 修飾されていない変換指定子は % 文字で始まり指定子の動作を決定する文字が続きます。 一部の変換指定子は % の後に修飾文字 E または O が挿入された修飾形式を持ちます。 変換指定は後述のように出力中に適切な文字で置き換えられます。

% で始まるけれども以下の書式指定子のいずれにもマッチしない書式文字列内の文字の並びは普通の文字として解釈されます。

chrono-spec が空の場合は、 chrono オブジェクトは、それを std::stringstream osストリームして os.str() に書式指定通りにパディングを追加した後それを出力バッファにコピーしたかのように、書式化されます。

以下の書式指定子が利用可能です。

変換指定子 説明
%% 文字 % を書き込みます。
%n 改行文字を書き込みます。
%t 水平タブ文字を書き込みます。
時刻
%H
%OH
時 (24時間表記) を10進数として書き込みます。 結果が1桁の場合は前に0が付加されます。

修飾付きのコマンド %OH はロケールの代替表現を書き込みます。

%I
%OI
時 (12時間表記) を10進数として書き込みます。 結果が1桁の場合は前に0が付加されます。

修飾付きのコマンド %OI はロケールの代替表現を書き込みます。

%M
%OM
分を10進数として書き込みます。 結果が1桁の場合は前に0が付加されます。

修飾付きのコマンド %OM はロケールの代替表現を書き込みます。

%S
%OS
秒を10進数として書き込みます。 秒数が10未満の場合は前に0が付加されます。

入力の精度が正確に秒で表せない場合は、書式は入力の精度にマッチする精度 (または、浮動小数点の10進数の秒への変換が小数点以下18桁以内で行えない場合はマイクロ秒の精度) を持つ固定小数点表記の10進浮動小数点数になります。 小数点の文字はロケールに従ってローカライズされます。

修飾付きのコマンド %OS はロケールの代替表現を書き込みます。

%p 午前/午後に相当するロケールの表現を書き込みます。
%R "%H:%M" と同等です。
%T "%H:%M:%S" と同等です。
%r ロケールの12時間表記の時刻表現を書き込みます。
%X
%EX
ロケールの時刻表現を書き込みます。

修飾付きのコマンド %EX はロケールの代替時刻表現を書き込みます。

以下の指定子は、認識されますが、 std::format_error が投げられます。

変換指定子 説明
%C
%EC
切り捨て除算を使用して100で割った年を書き込みます。 結果が1桁の場合は前に0が付加されます。

修飾付きのコマンド %EC はロケールの世紀の代替表現を書き込みます。

%y 年の下2桁を書き込みます。 結果が1桁の場合は前に0が付加されます。
%Y 年を10進数として書き込みます。 結果が4桁未満の場合は4桁になるまで前に0が付加されます。
%b
%h
ロケールの省略形の月名を書き込みます。
%B ロケールの完全形の月名を書き込みます。
%m
%Om
月を10進数として書き込みます (1月が 01 です)。 結果が1桁の場合は前に0が付加されます。

修飾付きのコマンド %Om はロケールの代替表現を書き込みます。

%d
%Od
日を10進数として書き込みます。 結果が1桁の場合は前に0が付加されます。

修飾付きのコマンド %Od はロケールの代替表現を書き込みます。

%e
%Oe
日を10進数として書き込みます。 結果が1桁の場合は前に0が付加されます。

修飾付きのコマンド %Oe はロケールの代替表現を書き込みます。

曜日
%a ロケールの省略形の曜日名を書き込みます。
%A ロケールの完全形の曜日名を書き込みます。
%u
%Ou
ISO の曜日を10進数 (1〜7) として書き込みます。 月曜日が 1 です。

修飾付きのコマンド %Ou はロケールの代替表現を書き込みます。

%w
%Ow
曜日を10進数 (0〜6) として書き込みます。 日曜日が 0 です。

修飾付きのコマンド %Ow はロケールの代替表現を書き込みます。

ISO 8601 の週基準の年

ISO 8601 では、週は月曜日から始まり、年の最初の週は、以下の要件を満たさなければなりません。

  • 1月4日を含む
  • その年の最初の木曜日を含む
%g ISO 8601 の週基準の年の下2桁を書き込みます。 結果が1桁の場合は前に0が付加されます。
%G ISO 8601 の週基準の年を10進数として書き込みます。 結果が4桁未満の場合は4桁になるまで前に0が付加されます。
%V
%OV
ISO 8601 の週番号を10進数として書き込みます。 結果が1桁の場合は前に0が付加されます。

修飾付きのコマンド %OV はロケールの代替表現を書き込みます。

週番号および通日
%j 通日を10進数として書き込みます (1月1日が 001 です)。 結果が3桁未満の場合は3桁になるまで前に0が付加されます。
%U
%OU
週番号を10進数として書き込みます。 その年の最初の日曜日が週番号01の最初の日です。 同じ年のそれより前の日は週番号00です。 結果が1桁の場合は前に0が付加されます。

修飾付きのコマンド %OU はロケールの代替表現を書き込みます。

%W
%OW
週番号を10進数として書き込みます。 その年の最初の月曜日が週番号01の最初の日です。 同じ年のそれより前の日は週番号00です。 結果が1桁の場合は前に0が付加されます。

修飾付きのコマンド %OW はロケールの代替表現を書き込みます。

日付
%D "%m/%d/%y" と同等です。
%F "%Y-%m-%d" と同等です。
%x
%Ex
ロケールの日付表現を書き込みます。

修飾付きのコマンド %Ex はロケールの代替日付表現を書き込みます。

その他
%c
%Ec
ロケールの日付時刻表現を書き込みます。

修飾付きのコマンド %Ec はロケールの代替日付時刻表現を書き込みます。

%z
%Ez
%Oz
UTC からのオフセットを ISO 8601 形式で書き込みます。 例えば -0430 は UTC より4時間30分遅れていることを表します。 オフセットがゼロの場合は +0000 が使用されます。

修飾付きのコマンド %Ez および %Oz は時と分の間に : を挿入します (例えば -04:30)。

%Z タイムゾーンの省略形を書き込みます。

[編集]

[編集] 関連項目

(C++20)
引数の書式化された表現を新しい文字列に格納します
(関数テンプレート) [edit]