次の方法で共有


clock_time_conversion 構造体

time_point をある種類のクロックから別の種類のクロックに変換しながら同等の時点を維持する方法を指定する特徴。

構文

// C++20
1) template<class Dest, class Source> struct clock_time_conversion {};
2) template<class Clock> struct clock_time_conversion<Clock, Clock>;
3) template<> struct clock_time_conversion<system_clock, system_clock>;
4) template<> struct clock_time_conversion<utc_clock, utc_clock>;
5) template<> struct clock_time_conversion<system_clock, utc_clock>;
6) template<> struct clock_time_conversion<utc_clock, system_clock>;
7) template<class Clock> struct clock_time_conversion<Clock, system_clock>;
8) template<class Clock> struct clock_time_conversion<system_clock, Clock>;
9) template<class Clock> struct clock_time_conversion<Clock, utc_clock>;
10) template<class Clock> struct clock_time_conversion<utc_clock, Clock>;

テンプレート パラメーター

Clock
変換前または変換後のクロック型。

Dest
変換後のクロック型。

Source
変換前のクロック型。

特徴は、次の変換を提供します。

1) 特殊化できるようにするために限って定義されている空の構造体。
2-4) ID 変換。 渡されたのと同じクロックを返します。
5-6) sys_timeutc_time の間の変換が、変換の方向に応じて utc_clock::to_sys または utc_clock::from_sys を呼び出します。
7-8) sys_time と指定されたクロックの間の変換が、指定されたクロックが to_sysfrom_sys をサポートするとき、変換の方向に応じて、Clock::to_sys または Clock::from_sys の呼び出しになります。
9-10) utc_time と指定されたクロックの間の変換が、指定されたクロックが from_utcto_sys をサポートするとき、変換の方向に応じて、Clock::to_utc または Clock::from_utc の呼び出しになります。

メンバー

名前 説明
operator () time_point を、あるクロックから別のクロックへ変換します。

解説

通常、この特徴を直接コード内で使用することはありません。 clock_cast 変換関数によって使用されます。

必要条件

ヘッダー:<chrono>

名前空間std::chrono:

コンパイラ オプション:/std:c++latest

operator()

time_point をあるクロックの種類から別の種類に変換しながら、同等の時点を維持します。

構文

1)
template <class Duration>
time_point<Clock, Duration> operator()(const time_point<Clock, Duration>& t) const;

2)
template <class Duration>
sys_time<Duration> operator()(const sys_time<Duration> & t) const;

3)
template <class Duration>
utc_time<Duration> operator()(const utc_time<Duration>& t) const;

4)
template <class Duration>
sys_time<Duration> operator()(const utc_time<Duration>& t) const;

5)
template <class Duration>
utc_time<Duration> operator()(const sys_time<Duration>& t) const;

パラメーター

t 変換する time_point

戻り値

1-3) ID 変換。 変換なし。 t を、何も変更せずに返します。
4) utc_clock::to_sys(t) を返します。
5) utc_clock::from_sys(t) を返します。

演繹ガイド

template <class Duration> operator() には、次の演繹ガイドが用意されています。

1)
template <class Duration> auto operator()(const sys_time<Duration>& t) const
    -> decltype(Clock::from_sys(t));

2)
template <class Duration> auto operator()(const time_point<SourceClock, Duration>& t) const
    -> decltype(Clock::to_sys(t));

3)
template <class Duration> auto operator()(const utc_time<Duration>& t) const
    -> decltype(Clock::from_utc(t));

4)
template <class Duration> auto operator()(const time_point<Clock, Duration>& t) const
    -> decltype(Clock::to_utc(t));

1) Clockfrom_sys() をサポートして time_point<Clock, Duration> を返すときだけ、オーバーロード解決に関与します。
2) Clockto_sys() をサポートして sys_time<Duration> を返すときだけ、オーバーロード解決に関与します。
3) Clockfrom_utc() をサポートして time_point<Clock, Duration> を返すときだけ、オーバーロード解決に関与します。
4) Clockto_utc() をサポートして utc_time<Duration> を返すときだけ、オーバーロード解決に関与します。

例: clock_time_conversion

#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    auto sd = sys_days{ 2021y / July / 26 };
    auto time = clock_time_conversion<utc_clock, system_clock>{}(sd);
    std::cout << time << "\n";
    return 0;
}
2021-07-26 00:00:00

関連項目

<chrono>
clock_cast
ヘッダー ファイル リファレンス