<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
ソース durationd の内部表現の型。

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
ソース durationd の内部表現の型。

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
tpduration 型。

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
SourceClockduration、または指定したもの。

SourceClock
変換後の time_point が基づくクロック型。

t
変換する time_point

戻り値

time_pointt と等価ですが、DestClock に固有です。

解説

パラメーター SourceClockDuration は、明示的に渡されない場合に、クラス テンプレート引数の推論によって推論できます。 たとえば、clock_cast<utc_clock>(file_clock::now()) と指定すると、SourceClockfile_clock と推測され、Durationfile_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
ソース durationd の内部表現の型。

Period
ソース Rep 型への 1 秒間の比率 (Rep あたり秒) を表す std::ratio

d
対象 duration の型にキャストするソース duration オブジェクト。

戻り値

durationd を表す型 ToDuration のオブジェクト。 必要に応じて、対象の型に適合するように切り捨てられます。 ソースに無限大の NaN が含まれている場合、またはターゲット duration での表現に対して大きすぎる場合、浮動小数点 duration を整数 duration にキャストした結果は未定義になります。

解説

分を秒に変換する場合など、ソース期間がターゲット期間によって完全に割り切れる場合は、duration_cast を使用して duration 型を変換する必要はありません。 また、浮動小数点 duration 型間の変換には必要ありません。 通常のキャストまたは duration コンストラクターを使用して、両方の変換を行うことができます。

duration_cast は、ToDurationduration のインスタンスでない限り、オーバーロードの解決には参加しません。 暗黙的な変換ではなく 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
ソース durationd の内部表現の型。

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
tpduration 型。

tp
ソース time_point オブジェクト。

戻り値

tp 以下である ToDuration を使用して表される最大の時点を返します。 実質的に、time_point<Clock, ToDuration>(floor<ToDuration>(tp.time_since_epoch())); です。

解説

floor は、ToDuration 型が duration のインスタンスでない限り、オーバーロードの解決には参加しません。

from_stream

std::chrono 時間のいずれか、または daymonthmonth_dayweekdayyearyear_monthyear_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 の要素の場合は型定義 stringwchar_t の場合は wstringchar16_t の場合は u16stringchar32_t の場合は u32string です。

traits
basic_stringbasic_istream の特殊化の charT 属性を記述します。

Rep
duration 型の内部表現型。

Period
ソース Rep 型への 1 秒間の比率 (Rep あたり秒) を表す std::ratio

Duration
時間の特殊化に使用される duration 型。

パラメーター

abbrev
abbrevnullptr でなく、書式指定子 %Z が指定され、解析が成功した場合は、abbrev に解析された値が格納されます。

d
解析が成功した場合、関数が返された解析日が格納されます。

dur
ストリームから解析された duration

fmt
入力との一致に使用される書式指定文字列。 解析書式設定オプションの一覧については、書式指定文字列の解析に関する記事を参照してください。

ft
ストリームから解析された file_time

gt
ストリームから解析された gps_time

is
解析する入力ストリーム。

lt
ストリームから解析された local_time

m
ストリームから解析された month

md
ストリームから解析された month_day

offset
offsetnullptr でなく、書式指定子 %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 書式指定文字列

形式は、次のいずれかの文字列になります。

Date

指定子 説明
%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 1001です。 結果が 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

年式

指定子 説明
%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_secondtrue である leap_second_info を返します。それ以外の場合、false を返します。 elapsed メンバーは、エポック日付 1970-01-01ut の間のうるう秒の合計を保持します。 is_leap_secondtrue の場合、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_pmfalse の場合、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
ソース durationd の内部表現の型。

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
tpduration 型。

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
tpduration 型。

tp
ToDuration 型を持つ time_point オブジェクトにキャストするオブジェクト。

戻り値

ToDuration 型を持つ time_point オブジェクトを返します。 実質的に、time_point<Clock, ToDuration>(duration_cast<ToDuration>(t.time_since_epoch())); です。

解説

ToDurationduration の特殊化でない限り、この関数はオーバーロードの解決に関与しません。

関連項目

<chrono>
chrono リテラル
chrono 演算子
duration クラス
time_point クラス
time_zone クラス