命名空间
变体
操作

std::chrono::clock_time_conversion

来自 cppreference.com
< cpp‎ | chrono
 
 
实用程序库
语言支持
类型支持 (基本类型,RTTI)
库特性测试宏 (C++20)
动态内存管理
程序实用程序
协程支持 (C++20)
可变参数函数
调试支持
(C++26)
三元比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用实用程序
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中已弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
通用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
日期和时间实用程序
时间点
(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)(C++20)(C++20)(C++20)  
(C++20)
chrono I/O
(C++20)
C 样式日期和时间
 
在头文件 <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 可调用的 operator() 来实现这一点,该运算符接受类型 std::chrono::time_point<Source, Duration> 的参数,并返回一个 std::chrono::time_point<Dest, OtherDuration>,该运算符表示时间上等效的点。返回的时间点的持续时间是根据源持续时间计算得出的,计算方式因每个特化而异。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 的转换以及从 std::chrono::sys_time 的转换:operator() 分别调用 Clock::to_sysClock::from_sys
8,9)Clock 支持 from_utcto_utc 时,到 std::chrono::utc_time 的转换以及从 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).

[编辑] 另请参阅

将一个时钟的时间点转换为另一个时钟
(函数模板) [编辑]