名稱空間
變體
操作

std::chrono::clock_time_conversion

來自 cppreference.com
< cpp‎ | chrono
 
 
日期和時間庫
時間點
(C++11)
clock_time_conversion
(C++20)  
(C++20)
時長
(C++11)
時鐘
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
日間時間
(C++20)(C++20)
(C++20)(C++20)
(C++20)
日曆
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)(C++20)
chrono I/O
(C++20)

 
定義於標頭檔案 <chrono>
template< class Dest, class Source >
struct clock_time_conversion {};
(C++20 起)

std::chrono::clock_time_conversion 是一個特性,它指定了如何將 Source 時鐘的 std::chrono::time_point 轉換為 Dest 時鐘的 std::chrono::time_point。它透過提供一個 const-callable operator() 來實現,該運算子接受型別為 std::chrono::time_point<Source, Duration> 的引數,並返回一個表示等效時間點的 std::chrono::time_point<Dest, OtherDuration>。返回時間點的 duration 是根據源 duration 計算的,其方式因每個特化而異。clock_time_conversion 通常僅透過 std::chrono::clock_cast 間接使用。

如果至少有一個模板引數是使用者定義的時鐘型別,程式可以特化 clock_time_conversion

主模板是一個空結構體。標準定義了以下特化:

template< class Clock >
struct clock_time_conversion<Clock, Clock>;
(1) (C++20 起)
template<>
struct clock_time_conversion<std::chrono::system_clock, std::chrono::system_clock>;
(2) (C++20 起)
template<>
struct clock_time_conversion<std::chrono::utc_clock, std::chrono::utc_clock>;
(3) (C++20 起)
template<>
struct clock_time_conversion<std::chrono::system_clock, std::chrono::utc_clock>;
(4) (C++20 起)
template<>
struct clock_time_conversion<std::chrono::utc_clock, std::chrono::system_clock>;
(5) (C++20 起)
template< class Clock >
struct clock_time_conversion<Clock, std::chrono::system_clock>;
(6) (C++20 起)
template< class Clock >
struct clock_time_conversion<std::chrono::system_clock, Clock>;
(7) (C++20 起)
template< class Clock >
struct clock_time_conversion<Clock, std::chrono::utc_clock>;
(8) (C++20 起)
template< class Clock >
struct clock_time_conversion<std::chrono::utc_clock, Clock>;
(9) (C++20 起)
1-3) 恆等轉換:operator() 返回引數的副本。
4,5) std::chrono::sys_timestd::chrono::utc_time 之間的轉換:operator() 分別呼叫 std::chrono::utc_clock::to_sysstd::chrono::utc_clock::from_sys
6,7)Clock 支援 from_systo_sys 時,與 std::chrono::sys_time 之間的轉換:operator() 分別呼叫 Clock::to_sysClock::from_sys
8,9)Clock 支援 from_utcto_utc 時,與 std::chrono::utc_time 之間的轉換:operator() 分別呼叫 Clock::to_utcClock::from_utc

目錄

[編輯] 成員函式

每個特化都隱式聲明瞭預設建構函式、複製建構函式、移動建構函式、複製賦值運算子、移動賦值運算子和解構函式。

std::chrono::clock_time_conversion::operator()

template< class Duration >

std::chrono::time_point<Clock, Duration>

    operator()( const std::chrono::time_point<Clock, Duration>& t ) const;
(1) (特化 (1) 的成員)
template< class Duration >

std::chrono::sys_time<Duration>

    operator()( const std::chrono::sys_time<Duration> & t ) const;
(2) (特化 (2) 的成員)
template< class Duration >

std::chrono::utc_time<Duration>

    operator()( const std::chrono::utc_time<Duration>& t ) const;
(3) (特化 (3) 的成員)
template< class Duration >

std::chrono::sys_time<Duration>

    operator()( const std::chrono::utc_time<Duration>& t ) const;
(4) (特化 (4) 的成員)
template< class Duration >

std::chrono::utc_time<Duration>

    operator()( const std::chrono::sys_time<Duration>& t ) const;
(5) (特化 (5) 的成員)
template< class Duration >

auto operator()( const std::chrono::sys_time<Duration>& t ) const

    -> decltype(Clock::from_sys(t));
(6) (特化 (6) 的成員)
template< class Duration >

auto operator()( const std::chrono::time_point<SourceClock, Duration>& t ) const

    -> decltype(Clock::to_sys(t));
(7) (特化 (7) 的成員)
template< class Duration >

auto operator()( const std::chrono::utc_time<Duration>& t ) const

    -> decltype(Clock::from_utc(t));
(8) (特化 (8) 的成員)
template< class Duration >

auto operator()( const std::chrono::time_point<Clock, Duration>& t ) const

    -> decltype(Clock::to_utc(t));
(9) (特化 (9) 的成員)

將引數 std::chrono::time_point 轉換為目標時鐘。

1-3) 恆等轉換。返回未改變的 t
6) 返回 Clock::from_sys(t)。此過載僅在表示式 Clock::from_sys(t) 格式正確時參與過載決議。如果 Clock::from_sys(t) 不返回 std::chrono::time_point<Clock, Duration>,其中 Durationstd::chrono::duration 的某個有效特化,則程式格式錯誤。
7) 返回 Clock::to_sys(t)。此過載僅在表示式 Clock::to_sys(t) 格式正確時參與過載決議。如果 Clock::to_sys(t) 不返回 std::chrono::sys_time<Duration>,其中 Durationstd::chrono::duration 的某個有效特化,則程式格式錯誤。
8) 返回 Clock::from_utc(t)。此過載僅在表示式 Clock::from_utc(t) 格式正確時參與過載決議。如果 Clock::from_utc(t) 不返回 std::chrono::time_point<Clock, Duration>,其中 Durationstd::chrono::duration 的某個有效特化,則程式格式錯誤。
9) 返回 Clock::to_utc(t)。此過載僅在表示式 Clock::to_utc(t) 格式正確時參與過載決議。如果 Clock::to_utc(t) 不返回 std::chrono::utc_time<Duration>,其中 Durationstd::chrono::duration 的某個有效特化,則程式格式錯誤。

引數

t - 要轉換的時間點

返回值

如上所述的轉換結果

1-3) t
6) Clock::from_sys(t)
7) Clock::to_sys(t)
8) Clock::from_utc(t)
9) Clock::to_utc(t)

[編輯] 參閱

將一個時鐘的時間點轉換為另一個時鐘的時間點
(函式模板) [編輯]