共用方式為


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) 身分識別轉換。 傳回您傳入的相同時鐘。
5-6) 在和 utc_time 之間sys_timeutc_clock::to_sys轉換,或utc_clock::from_sys視轉換的方向而定。
7-8) 在與指定的時鐘之間 sys_time 轉換時,當指定的時鐘支援 to_sysfrom_sys時,會根據轉換的方向來呼叫 Clock::to_sysClock::from_sys
9-10) 在 與指定的時鐘之間 utc_time 轉換時,當指定的時鐘支援 from_utcto_sys時,會根據轉換的方向來呼叫 Clock::to_utcClock::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;

參數

ttime_point要轉換的 。

傳回值

1-3) 身分識別轉換。 沒有轉換。 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) 只有在支援 from_sys() 和 傳回 time_point<Clock, Duration>Clock,才會參與多載解析。
2) 只有在支援 to_sys() 和 傳回 sys_time<Duration>Clock,才會參與多載解析。
3) 只有在支援 from_utc() 和 傳回 time_point<Clock, Duration>Clock,才會參與多載解析。
4) 只有在支援 to_utc() 和 傳回 utc_time<Duration>Clock,才會參與多載解析。

範例: 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
標頭檔參考