<chrono>
関数
abs(duration)
d >= d.zero()
の場合は d
を返します。それ以外の場合は -d
を返します。
構文
template <class Rep, class Period>
constexpr duration<Rep, Period> abs(duration<Rep, Period> d ); // C++17
パラメーター
Rep
ソース duration
d
の内部表現の型。
Period
ソース Rep
型への 1 秒間の比率 (Rep
あたり秒) を表す std::ratio
。
d
ソース duration
オブジェクト。
戻り値
d
の絶対値。
例: abs(duration)
// compile using: /std:c++latest
#include <chrono>
#include <iostream>
int main()
{
std::cout << abs(-24h);
return 0;
}
24h
ceil(duration)
指定された duration
以上の対象の型内の表現可能な最小の duration
を返します。
構文
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
ceil(const duration<Rep, Period>& d); // C++17
パラメーター
ToDuration
対象の duration
型。 duration
の特殊化として制約されます。
Rep
ソース duration
d
の内部表現の型。
Period
ソース Rep
型への 1 秒間の比率 (Rep
あたり秒) を表す std::ratio
。
d
ソース duration
オブジェクト。
戻り値
パラメーター d
以上の ToDuration
内の表現可能な最小の duration
を返します。
解説
ceil
は、ToDuration
型が duration
のインスタンスでない限り、オーバーロードの解決には参加しません。
ceil(time_point)
ターゲット duration
で表現可能な最小の時点を返します。これは、指定した時間と同じかそれより大きい値になります。
構文
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
ceil(const time_point<Clock, Duration>& t); // C++17
パラメーター
ToDuration
対象の duration
型。 duration
の特殊化として制約されます。
Clock
結果の共通クロック型とソース パラメーター tp
。
Duration
tp
の duration
型。
tp
ソース time_point
オブジェクト。
戻り値
tp
以上である ToDuration
を使用して表現可能な最小の時間ポイントを返します。 実質的に、time_point<Clock, ToDuration>(ceil<ToDuration>(tp.time_since_epoch()));
です。
解説
ceil
は、ToDuration
型が duration
のインスタンスでない限り、オーバーロードの解決には参加しません。
clock_cast
あるクロックの time_point
を別のクロックの等価の time_point
に変換します。
構文
template <class DestClock, class SourceClock, class Duration>
auto clock_cast(const time_point<SourceClock, Duration>& t); // C++20
パラメーター
DestClock
time_point
の変換後のクロック型。
Duration
SourceClock
の duration
、または指定したもの。
SourceClock
変換後の time_point
が基づくクロック型。
t
変換する time_point
。
戻り値
time_point
は t
と等価ですが、DestClock
に固有です。
解説
パラメーター SourceClock
と Duration
は、明示的に渡されない場合に、クラス テンプレート引数の推論によって推論できます。 たとえば、clock_cast<utc_clock>(file_clock::now())
と指定すると、SourceClock
は file_clock
と推測され、Duration
は file_clock::duration
として推測されます。
次の表に、適切な形式のクロック変換の一覧を示します。SourceClock
から DestClock
への変換の手順が最も少ないものが選択されています。
clock_time_conversion<DestClock, SourceClock>{}(t)
clock_time_conversion<DestClock, system_clock>{}(
clock_time_conversion<system_clock, SourceClock>{}(t))
clock_time_conversion<DestClock, utc_clock>{}(
clock_time_conversion<utc_clock, SourceClock>{}(t))
clock_time_conversion<DestClock, utc_clock>{}(
clock_time_conversion<utc_clock, system_clock>{}(
clock_time_conversion<system_clock, SourceClock>{}(t)))
clock_time_conversion<DestClock, system_clock>{}(
clock_time_conversion<system_clock, utc_clock>{}(
clock_time_conversion<utc_clock, SourceClock>{}(t)))
clock_time_conversion
の実行内容の詳細については、「 clock_time_conversion
構造体」を参照してください。
例 clock_cast
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
utc_clock::time_point t = clock_cast<utc_clock>(file_clock::now());
std::cout << t;
return 0;
}
2021-10-11 22:58:17.8540720
current_zone
現在のタイム ゾーン オブジェクトを取得します。
構文
const time_zone* current_zone(); // C++20
戻り値
time_zone
へのポインターを、get_tzdb().current_zone()
への呼び出しの場合と同様に返します。 タイム ゾーン データベースへの最初の参照で、タイム ゾーン データベースを初期化できない場合は、runtime_error
の例外がスローされます。
duration_cast
duration
を指定したターゲット duration
型にキャストします。
構文
template <class ToDuration, class Rep, class Period>
constexpr ToDuration
duration_cast(const duration<Rep, Period>& d); // C++11
パラメーター
ToDuration
対象の duration
型。 duration
の特殊化として制約されます。
Rep
ソース duration
d
の内部表現の型。
Period
ソース Rep
型への 1 秒間の比率 (Rep
あたり秒) を表す std::ratio
。
d
対象 duration
の型にキャストするソース duration
オブジェクト。
戻り値
duration
d
を表すToDuration
型のオブジェクト。 必要に応じて、対象の型に適合するように切り捨てられます。 ソースに無限大の NaN
が含まれている場合、またはターゲット duration
での表現に対して大きすぎる場合、浮動小数点 duration
を整数 duration
にキャストした結果は未定義になります。
解説
分を秒に変換する場合など、ソース期間がターゲット期間によって完全に割り切れる場合は、duration_cast
を使用して duration
型を変換する必要はありません。 また、浮動小数点 duration
型間の変換には必要ありません。 通常のキャストまたは duration
コンストラクターを使用して、両方の変換を行うことができます。
duration_cast
は、ToDuration
が duration
のインスタンスでない限り、オーバーロードの解決には参加しません。 暗黙的な変換ではなく static_cast
を使用して、すべての変換を行います。 可能であれば、乗算と除算は回避されます。 たとえば、コンパイラが、ターゲット期間とソース期間の共通比率に分子または分母が 1 であることを認識しているとします。 計算は、使用可能な最も幅の広い型で実行された後、完了時に static_cast
によって結果型に変換されます。
例 duration_cast
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
seconds s(1);
std::cout << duration_cast<microseconds>(s) << '\n';
std::cout << duration_cast<nanoseconds>(s) << '\n';
return 0;
}
1000000us
1000000000ns
floor(duration)
指定された duration
以下の対象の型内の表現可能な最大の duration
を返します。
構文
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
floor(const duration<Rep, Period>& d); // C++17
パラメーター
ToDuration
対象の duration
型。 duration
の特殊化として制約されます。
Rep
ソース duration
d
の内部表現の型。
Period
ソース Rep
型への 1 秒間の比率 (Rep
あたり秒) を表す std::ratio
。
d
ソース duration
オブジェクト。
戻り値
パラメーター d
以下の ToDuration
で表現可能な最大の duration
を返します。
解説
floor
は、ToDuration
型が duration
のインスタンスでない限り、オーバーロードの解決には参加しません。
floor(time_point)
指定された時点以下であるターゲット duration
で表現可能な最大の時点を返します。
構文
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
floor(const time_point<Clock, Duration>& tp); // C++17
パラメーター
ToDuration
対象の duration
型。 duration
の特殊化として制約されます。
Clock
結果の共通クロック型とソース パラメーター tp
。
Duration
tp
の duration
型。
tp
ソース time_point
オブジェクト。
戻り値
tp
以下である ToDuration
を使用して表される最大の時点を返します。 実質的に、time_point<Clock, ToDuration>(floor<ToDuration>(tp.time_since_epoch()));
です。
解説
floor
は、ToDuration
型が duration
のインスタンスでない限り、オーバーロードの解決には参加しません。
from_stream
std::chrono
時間のいずれか、または day
、month
、month_day
、weekday
、year
、year_month
、year_month_day
などの間隔の型への入力ストリームを、指定された書式を使用して解析します。
解析に失敗した場合、is.setstate
(ios_base::failbit
) が呼び出され、出力パラメーターは変更されません。
// 1) day - C++20
template<class charT class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
day& d, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 2) duration - C++20
template<class charT, class traits, class Rep, class Period, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
duration<Rep, Period>& dur, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 3) file_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
file_time<Duration>& ft, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 4) gps_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
gps_time<Duration>& gt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 5) local_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
local_time<Duration>& lt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 6) month - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
month& m, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 7) month_day - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
month_day& md, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 8) utc_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
utc_time<Duration>& ut, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 9) sys_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
sys_time<Duration>& st, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 10) tai_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
tai_time<Duration>& tt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 11) weekday - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
weekday& wd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 12) year - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year& y, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 13) year_month - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year_month& ym, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 14) year_month_day - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year_month_day& ymd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
テンプレート パラメーター
Alloc
文字列のメモリの割り当てと割り当て解除を処理するアロケーター オブジェクトを表す型。
charT
ストリームから読み取られる 1 文字のデータ型。文字列に格納されます。 C++ 標準ライブラリはこのクラス テンプレートの特殊化を提供し、型 char
の要素の場合は型定義 string
、wchar_t
の場合は wstring
、char16_t
の場合は u16string
、char32_t
の場合は u32string
です。
traits
basic_string
と basic_istream
の特殊化の charT
属性を記述します。
Rep
duration
型の内部表現型。
Period
ソース Rep
型への 1 秒間の比率 (Rep
あたり秒) を表す std::ratio
。
Duration
時間の特殊化に使用される duration
型。
パラメーター
abbrev
abbrev
が nullptr
でなく、書式指定子 %Z
が指定され、解析が成功した場合は、abbrev
に解析された値が格納されます。
d
解析が成功した場合、関数が返された解析日が格納されます。
dur
ストリームから解析された duration
。
fmt
入力との一致に使用される書式指定文字列。 解析書式設定オプションの一覧については、書式指定文字列の解析に関する記事を参照してください。
ft
ストリームから解析された file_time
。
gt
ストリームから解析された gps_time
。
is
解析する入力ストリーム。
lt
ストリームから解析された local_time
。
m
ストリームから解析された month
。
md
ストリームから解析された month_day
。
offset
offset
が nullptr
でなく、書式指定子 %z
または変更された %Ez
や %0z
などのバリアントが指定され、解析が成功した場合、offset
は解析された値をポイントします。
st
ストリームから解析された sys_time
。
tt
ストリームから解析された tai_time
。
ut
ストリームから解析された utc_time
。
wd
ストリームから解析された weekday
。
y
ストリームから解析された year
。
ym
ストリームから解析された year_month
。
ymd
ストリームから解析された year_month_day
。
戻り値
入力ストリーム is
。
例: from_stream
// compile using: /std:c++latest
#include <chrono>
#include <iostream>
int main()
{
std::istringstream str{ "22" };
std::basic_istream<char> stream{ str.rdbuf() };
std::chrono::day d;
std::chrono::from_stream(stream, "%d", d);
std::cout << d << "\n";
return 0;
}
22
解説
7) %Z
が使用され、正常に解析された場合、abbrev
が null 以外の場合、その値は *abbrev
に割り当てられます。 %z
(または変更されたバリアント) が使用され、正常に解析された場合、その値は、offset
が null 以外の場合に *offset
に割り当てられます。
12) %Z
が使用され、正常に解析された場合、abbrev
が null 以外の場合、その値は *abbrev
に割り当てられます。 %z
(または変更されたバリアント) が使用され、正常に解析された場合、その値は、offset
が null 以外の場合に *offset
に割り当てられます。
from_stream
書式指定文字列
形式は、次のいずれかの文字列になります。
日
指定子 | 説明 |
---|---|
%D |
%m/%d/%y と同じ意味です。 |
%F % NF |
これは、%Y-%m-%d に相当します。 幅 N を使用して変更した場合、幅は %Y にのみ適用されます。 |
%x %Ex |
ロケールの日付表現。%Ex ロケールの代替日付表現を解析します。1 |
日付
指定子 | 説明 |
---|---|
%d %Od % Nd %e %Oe % Ne |
10 進数としての月の日。% Nd は、読み取る最大文字数を指定します (例 %1d )。 N を指定しない場合、既定値は 2 です。先頭の 0 は許可されますが、必須ではありません。 %Od (0 ではなく文字 O ) は、ロケールの月の日の代替表現を解釈します。1 %e は %d と等価であり、%d のように変更できます。1 |
曜日
指定子 | 説明 |
---|---|
%a %A |
ロケールの大文字と小文字を区別しない完全名または省略形の曜日名。%A は %a と同じです。 |
%u % Nu |
10 進数 (1 から 7) の ISO 曜日。月曜日は 1 です。 % Nu は、読み取る最大文字数を指定します (例 %2u )。 N を指定しない場合、既定値は 1 です。 先頭のゼロは許可されますが、必須ではありません。 |
%w % Nw %Ow |
曜日を 10 進数 (0 から 6) で表します。日曜日は 0 です。% Nw は、読み取る最大文字数を指定します (例 %2w )。 N を指定しない場合、既定値は 1 です。先頭の 0 は許可されますが、必須ではありません。 %Ow (0 ではなく文字 O ) は、ロケールの代替表現を解釈します。1 |
年初から数えた週または日
指定子 | 説明 |
---|---|
%j % Nj |
書式設定する型が期間の特殊化である場合は、埋め込みのない 10 進数の日数。 それ以外の場合は、年の日を 10 進数として指定します。 Jan 1 が 001 です。 結果が 3 桁未満の場合、左に 0 (ゼロ) から 3 桁の数字が埋め込まれます。% Nj は、読み取る最大文字数を指定します (例 %2j )。 N を指定しない場合、既定値は 3 です。 先頭の数字は許可されますが、必須ではありません。 |
%U % NU %OU |
10 進数での年の週番号。 年の最初の日曜日は、週 01 の最初の日です。 その週の前の同じ年の日数は週 00 です。 結果が 1 桁の場合は、先頭に 0 (ゼロ) が付きます。% NU は、読み取る最大文字数を指定します (例 %2U )。 N を指定しない場合、既定値は 2 です。先頭の 0 は許可されますが、必須ではありません。 %OU (0 以外の O 文字) は、ロケールの代替表現を解析します。1 |
%W % NW %OW |
10 進数での年の週番号。 年の最初の月曜日は、週 01 の最初の日です。 その週の前の同じ年の日数は週 00 です。結果が 1 桁の場合は、先頭に 0 (ゼロ) が付きます。% NW は、読み取る最大文字数を指定します (例 %2W )。 N を指定しない場合、既定値は 1 です。先頭の 0 は許可されますが、必須ではありません。 %OW (0 以外の O 文字) は、ロケールの代替表現を解析します。1 |
時刻
指定子 | 説明 |
---|---|
%H % NH %OH |
10 進数としての時間 (24 時間時計)。 結果が 1 桁の場合は、先頭に 0 (ゼロ) が付きます。% NH は、読み取る最大文字数を指定します (例 %1H )。 N を指定しない場合、既定値は 2 です。先頭の 0 は許可されますが、必須ではありません。 %OH (0 以外の O 文字) は、ロケールの代替表現を解析します。1 |
%I % NI %OI |
10 進数としての時間 (12 時間クロック)。 結果が 1 桁の場合は、先頭に 0 (ゼロ) が付きます。% NI は、読み取る最大文字数を指定します (例 %1I )。 N を指定しない場合、既定値は 2 です。先頭の 0 は許可されますが、必須ではありません。 %OI (0 以外の O 文字) は、ロケールの代替表現を解析します。1 |
%M % NM %OM |
10 進数としての分数。 結果が 1 桁の場合は、先頭に 0 (ゼロ) が付きます。% NM は、読み取る最大文字数を指定します (例 %3M )。 N を指定しない場合、既定値は 2 です。先頭の 0 は許可されますが、必須ではありません。 %OM (0 以外の O 文字) は、ロケールの代替表現を解析します。1 |
%S % NS %OS |
10 進数としての秒。 秒数が 10 未満の場合、結果の先頭には 0 (ゼロ) が付きます。 入力の有効桁数を秒で正確に表現できない場合、形式は固定形式の 10 進浮動小数点数になります。 関数が 18 桁の小数部の桁数内で浮動小数点の 10 進数を変換できない場合、精度はマイクロ秒になります。 それ以外の場合、その有効桁数は入力の有効桁数と一致します。 小数点の文字は、ロケールに従ってローカライズされます。% NS は、読み取る最大文字数を指定します (例 %3S )。 N を指定しない場合、既定値は 2 です。先頭の 0 は許可されますが、必須ではありません。 %OS (0 以外の O 文字) は、ロケールの代替表現を解析します。1 |
%p |
12 時間制に関連付けられている AM/PM の指定に相当するロケール。 |
%r |
ロケールの 12 時間制時刻。 |
%R |
これは、%H:%M に相当します。 |
%T |
これは、"%H:%M:%S" に相当します。 |
%X , %EX |
ロケールの時刻表現。%EX 代替ロケールの時刻表現を解析します。1 |
Month
指定子 | 説明 |
---|---|
%b 、 %B 、 %h |
ロケールの完全または省略された月の名前。 値に有効な月が含まれていない場合、format_error の例外がスローされます。%h は %b と等価です。 |
%m , % Nm , %Om |
10 進数としての月。 Jan は 1 です。% Nm は、読み取る最大文字数を指定します (例 %3m )。 N を指定しない場合、既定値は 2 です。先頭の 0 は許可されますが、必須ではありません。 %Om (0 ではなく文字 O ) は、ロケールの代替表現を解釈します。1 |
Year
指定子 | 説明 |
---|---|
%C , % NC , %EC |
10 進数としての世紀。% NC は、読み取る最大文字数を指定します (例 %1N )。 N を指定しない場合、既定値は 2 です。 先頭の 0 は許可されますが、必須ではありません。%EC は、ロケールの世紀の代替表現を解釈します。 |
%y , % Ny , %Ey , %Oy |
年の最後の 2 桁の 10 進数。 世紀が指定されていない場合 (%C を使用する場合など)、範囲 [69, 99] 内の値は、1969 年から 1999 年までの年を参照すると推定され、範囲 [00, 68] 内の値は、2000 年から 2068 年を参照すると推定されます。% Ny は読み取り対象の最大文字数を設定します。 N を指定しない場合、既定値は 2 です。先頭の 0 は許可されますが、必須ではありません。 %Ey および %Oy (0 ではなく文字 O ) は、ロケールの代替表現を解釈します。1 |
%Y , % NY , %EY , |
10 進数としての年。 結果が 4 桁未満の場合、左に 0 (ゼロ) から 4 桁の数字が埋め込まれます。% NY は読み取り対象の最大文字数を設定します。 N を指定しない場合、既定値は 4 です。%EY ロケールの代替の通年表現を解析します。1 |
ISO 8601 の週ベースの年
ISO 8601 では、週は月曜日から始まります。 年の最初の週には、1 月 4 日を含め、その年の最初の木曜日を含める必要があります。
指定子 | 代替 |
---|---|
%g % Ng |
ISO 週ベースの年の最後の 2 桁の 10 進数。 結果が 1 桁の場合、先頭に 0 (ゼロ) が付きます。 % Ng は、読み取る最大文字数を指定します (例 %1g )。 N を指定しない場合、既定値は 2 です。 |
%G % NG |
10 進数としての ISO 週ベースの年。 結果が 4 桁未満の場合、左に 0 (ゼロ) から 4 桁の数字が埋め込まれます。 % NG は、読み取る最大文字数を指定します (例 %1G )。 N を指定しない場合、既定値は 4 です。 |
%V %OV % NV |
ISO 週ベースの週番号 (10 進数)。 結果が 1 桁の場合は、先頭に 0 (ゼロ) が付きます。 % NV は、読み取る最大文字数を指定します (例 %1V )。 N を指定しない場合、既定値は 2 です。%OV (0 以外の O 文字) は、ロケールの代替表現を解析します。1 |
全般
指定子 | 代替 |
---|---|
%% |
% 文字と一致 |
%c %Ec |
ロケールの日付と時刻の表現。%Ec は、ロケールの代替日時表現を解釈します。1 |
%n |
改行文字に一致します |
%t |
0 個または 1 個の空白文字と一致します |
%z %Ez %Oz |
形式 [+|-]hh[mm] の UTC からのオフセット。 たとえば、-0430 は UTC の 4 時間 30 分前を表し、04 は UTC から 4 時間後を表します。%Ez および %Oz (文字 O 、0 以外) は、時間と分の間の : を解析し、オプションで時間フィールドの先頭のゼロをレンダリングします1: [+|-]h[h][:mm] 。 たとえば、-04:30 は UTC の 4 時間 30 分前を表し、4 は UTC から 4 時間後を表します。 |
%Z |
タイム ゾーンの省略形または名前。 1 つの単語が解析されます。 この単語には、基本ソース文字セットの英数字、または、_ 、/ 、- 、+ のいずれかの文字のみを含めることができます。 |
種類別のフラグ
クラス | 指定子/フラグ |
---|---|
day |
d, e |
duration |
j、H、I、M、S、r、R、T、p、(q、Q は、解析でなく形式のみ) |
file_time |
Z、z、c、x、X、D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p |
gps_time |
Z、z、c、x、X、D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p |
hh_mm_ss |
H、I、M、S、r、R、T、p |
local_time |
c、x、X、D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p |
local_time_format_t |
z、Z、c、x、X、D、F、Y、C、y、b、B、h、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p、g、G、U、V、W |
local_info |
z, Z |
month |
b、h、B、m |
month_day |
B、d、j、e、b、h、m |
month_day_last |
B、d、j、e、b、h、m |
month_weekday |
b、B、h、m、a、A、u、w |
month_weekday_last |
b、B、h、m、a、A、u、w |
sys_info |
z, Z |
sys_time |
Z、z、c、x、X、D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p |
tai |
Z、z、c、x、X、D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p |
utc_time |
Z、z、c、x、X、D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p |
weekday |
a、A、u、w |
weekday_indexed |
a、A、u、w |
weekday_last |
a、A、u、w |
year |
Y、y、C |
year_month |
Y、y、B、g、G、h、C、b、m |
year_month_day |
D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w |
year_month_day_last |
D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w |
year_month_weekday |
D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w |
year_month_weekday_last |
D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w |
zoned_time |
z、Z、c、x、X、D、F、Y、C、y、b、B、h、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p、g、G、U、V、W |
1実装は現在 strftime と整合性があります。ただし O
(文字 O) と e
は受け入れられますが、無視されます。 つまり、"%Od"
は "%d"
として解釈されます。
get_leap_second_info
指定された時刻の leap_second_info
を返します。 これにより、指定された時間がうるう秒の挿入中に発生するかどうかに関する情報が提供されます。 また、1970 年 1 月 1 日から指定された時間の間に追加されたうるう秒数も示されます。 うるう秒の挿入は、International Earth Rotation and Reference Systems Service (IERS) が、アトミック時刻と、不規則であり徐々に鈍化する地球の回転を粗測定することによって追跡される時刻との差を計上するためにうるう時刻が追加されることを宣言する (61 秒が 1 分の結果になる) ときに発生します。
構文
template<class Duration>
leap_second_info
get_leap_second_info(const utc_time<Duration>& ut); // C++20
パラメーター
ut
leap_second_info
を取得するソース utc_time
。
戻り値
ut
が正のうるう秒の挿入中である場合は、メンバー is_leap_second
が true
である leap_second_info
を返します。それ以外の場合、false
を返します。 elapsed
メンバーは、エポック日付1970-01-01
とut
の間の閏秒の合計を保持します。 is_leap_second
が true
の場合、ut
によって参照されるうるう秒は、elapsed
の合計に含まれます。
get_tzdb
プログラム全体のタイム ゾーン データベース リストの最初のエントリを取得します。
構文
const tzdb& get_tzdb(); // C++20
戻り値
get_tzdb_list().front()
の呼び出しによるのと同様に、最初の tzdb
オブジェクトへの参照を返します。 タイム ゾーン データベースへの最初の参照で、タイム ゾーン データベースを初期化できない場合は、runtime_error
の例外がスローされます。
解説
まだ初期化されていない場合は、get_tzdb
は最初のアクセス時にプログラム全体のタイム ゾーン データベースを初期化します。 初期化時、データベースは、tzdb_list
初期化された 1 つのオブジェクトを保持する tzdb
です。
get_tzdb_list
プログラム全体のシングルトン タイム ゾーン データベースを取得します。
構文
tzdb_list& get_tzdb_list(); // C++20
戻り値
プログラム全体の tzdb_list
オブジェクトへの参照を返します。 有効な tzdb_list
オブジェクトへの参照を返すことができない場合、runtime_error
例外がスローされます。
解説
まだ初期化されていない場合は、get_tzdb_list
は最初のアクセス時にプログラム全体のタイム ゾーン データベースを初期化します。 初期化時、データベースは、tzdb_list
初期化された 1 つのオブジェクトを保持する tzdb
です。 get_tzdb_list
関数はスレッドセーフです。
is_am
指定した時間が日の ante-meridiem (AM) 部分にあるかどうかの述語。
構文
constexpr bool is_am(const hours& h) noexcept; // C++20
パラメーター
h
24 時間表記でのソース hours
表現。
戻り値
0h <= h && h <= 11h
の場合は true
を返し、それ以外の場合は false
を返します。
is_pm
指定した時間が、その日の post-meridiem (PM) 部分にあるかどうかの述語。
構文
constexpr bool is_pm(const hours& h) noexcept; // C++20
パラメーター
h
24 時間表記でのソース hours
表現。
戻り値
12h <= h && h <= 23h
の場合は true
を返し、それ以外の場合は false
を返します。
locate_zone
タイム ゾーン名によって指定されたタイム ゾーン オブジェクトを取得します。
構文
const time_zone* locate_zone(string_view tz_name); // C++20
パラメーター
tz_name
返すタイム ゾーンの名前。
戻り値
time_zone
へのポインターを、get_tzdb().locate_zone(tz_name)
への呼び出しの場合と同様に返します。 指定したタイム ゾーンが見つからない場合、またはタイム ゾーン データベースへの最初の参照であり、タイム ゾーン データベースを初期化できない場合は、runtime_error
の例外がスローされます。
解説
まだ初期化されていない場合は、locate_zone
は最初のアクセス時にプログラム全体のタイム ゾーン データベースを初期化します。 初期化時、データベースは、tzdb_list
初期化された 1 つのオブジェクトを保持する tzdb
です。
make12
指定された時間を 12 時間表記で返します。
構文
constexpr hours make12(const hours& h) noexcept; // C++20
パラメーター
h
24 時間表記でのソース hours
表現。
戻り値
範囲 [1h, 12h]
内の h
と等価の 12 時間を返します。 h
が範囲 [0h, 23h]
内にない場合、戻り値は指定されません。
make24
指定された時間を 24 時間表記で返します。
構文
constexpr hours make24(const hours& h, bool is_pm) noexcept; // C++20
パラメーター
h
12 時間表記でのソース hours
表現。
is_pm
ソース hours
表現は、PM (true
の場合) または AM (false
の場合) です。
戻り値
is_pm
が false
の場合、make24
は、h
が午前の時間を表すと想定して範囲 [0h, 11h]
内の h
に等しいの 24 時間を返します。 それ以外の場合、範囲 [12h, 23h]
内の h
に等しい 24 時間を返します。これには、h
が午後の時間を表すと想定されます。 h
が範囲 [1h, 12h]
内にない場合、戻り値は指定されません。
reload_tzdb
更新された情報が利用可能な場合は、タイム ゾーン データベースを再読み込みします。
構文
const tzdb& reload_tzdb();
戻り値
タイム ゾーン データベースの更新 (存在する場合) を行うと、reload_tzdb
は、最初の tzdb
オブジェクトへの参照を返します。これは、get_tzdb_list().front()
への呼び出しによる場合と同様です。 有効な tzdb
オブジェクトへの参照を返すことができない場合、runtime_error
例外がスローされます。
解説
local タイム ゾーン データベースは、current_zone
への呼び出しなどによって、プログラムがデータベースに最初にアクセスしたときに指定されたものです。 プログラムの実行中は、実装によってタイム ゾーン データベースが更新されることがあります。 プログラムが reload_tzdb
関数を呼び出す場合を除き、この更新プログラムはプログラムに影響しません。 更新される可能性のあるタイム ゾーン データベースは、リモート タイム ゾーン データベースと呼ばれます。
reload_tzdb
関数は、ローカル タイム ゾーン データベースとリモート タイム ゾーン データベースの両方のバージョンを確認します。 ローカル データベースとリモート データベースのバージョンが同じである場合、変更は行われません。 それ以外の場合は、get_tzdb_list
によってアクセスされる tzdb_list
の前に、リモート データベースがプッシュされます。 更新によって、ポインター、参照、または反復子が無効になることはありません。 reload_tzdb
関数は、get_tzdb_list().front()
と get_tzdb_list().erase_after()
の呼び出しに対してスレッドセーフです。
remote_version
最新のリモート データベース バージョンを含む文字列を取得します。
構文
string remote_version();
戻り値
最新のリモート データベース バージョンを含む string
を返します。
round(duration)
指定した duration
を、ターゲット型で表現可能な最も近い duration
に丸めます。
構文
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
round(const duration<Rep, Period>& d); // C++17
パラメーター
ToDuration
対象の duration
型。 duration
の特殊化として制約されます。ここで、treat_as_floating_point_v<typename ToDuration::rep>
は false
です。
Rep
ソース duration
d
の内部表現の型。
Period
ソース Rep
型への 1 秒間の比率 (Rep
あたり秒) を表す std::ratio
。
d
ソース duration
オブジェクト。
戻り値
ToDuration
の中で最も近い duration
表現をパラメーター d
に返します。 結合は、偶数の値 (t
) に移動します。ここで、t % 2 == 0
です。
解説
round
は、ToDuration
型が duration
のインスタンスであり、ToDuration
が整数表現を持つ場合を除き、オーバーロードの解決には参加しません。
round(time_point)
ターゲット duration
で表現可能であり、指定した時間に最も近い時点を返します。
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
round(const time_point<Clock, Duration>& tp);
パラメーター
ToDuration
対象の duration
型。 duration
の特殊化として制約されます。ここで、treat_as_floating_point_v<typename ToDuration::rep>
は false
です。
Clock
結果の共通クロック型とソース パラメーター tp
。
Duration
tp
の duration
型。
tp
ソース time_point
オブジェクト。
戻り値
ToDuration
を使用して表現可能である最も近い時点を tp
に返します。 結合は、偶数の値 (t
) に移動します。ここで、t % 2 == 0
です。 実質的に、time_point<Clock, ToDuration>(round<ToDuration>(tp.time_since_epoch()));
です。
解説
round
は、ToDuration
型が duration
のインスタンスでない限り、オーバーロードの解決には参加しません。
time_point_cast
time_point
オブジェクトを別の duration
型を持つ time_point
にキャストします。
構文
template <class ToDuration, class Clock, class Duration>
time_point<Clock, ToDuration>
time_point_cast(const time_point<Clock, Duration>& tp); // C++11
パラメーター
ToDuration
対象の duration
型。 duration
の特殊化として制約されます。
Clock
結果の共通クロック型とソース パラメーター tp
。
Duration
tp
の duration
型。
tp
ToDuration
型を持つ time_point
オブジェクトにキャストするオブジェクト。
戻り値
ToDuration
型を持つ time_point
オブジェクトを返します。 実質的に、time_point<Clock, ToDuration>(duration_cast<ToDuration>(t.time_since_epoch()));
です。
解説
ToDuration
が duration
の特殊化でない限り、この関数はオーバーロードの解決に関与しません。
関連項目
<chrono>
chrono
リテラル
chrono
演算子
duration
クラス
time_point
クラス
time_zone
クラス