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_time
utc_clock::to_sys
轉換,或utc_clock::from_sys
視轉換的方向而定。
7-8) 在與指定的時鐘之間 sys_time
轉換時,當指定的時鐘支援 to_sys
和 from_sys
時,會根據轉換的方向來呼叫 Clock::to_sys
或 Clock::from_sys
。
9-10) 在 與指定的時鐘之間 utc_time
轉換時,當指定的時鐘支援 from_utc
和 to_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) 身分識別轉換。 沒有轉換。 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