#include
表示两个时间点之间的时间差。
小时(hours):std::chrono::hours
分钟(minutes):std::chrono::minutes
秒(seconds):std::chrono::seconds
毫秒(milliseconds):std::chrono::milliseconds
微秒(microseconds):std::chrono::microseconds
纳秒(nanoseconds):std::chrono::nanoseconds
std::chrono::durationstd::chrono::durationstd::chrono::durationstd::chrono::duration// 创建一个200毫秒的时间段
std::chrono::duration duration1(200);
// 表示5秒的duration,使用长整数类型精度
std::chrono::duration duration2(5);
// 表示2.5秒的duration,使用浮点类型精度
duration duration3(2.5);
// 表示1分钟的duration,使用双精度类型精度
duration duration4(1);
#include
#include
#include
int main()
{
// 创建两个时间点
auto start = std::chrono::steady_clock::now();
std::this_thread::sleep_for(std::chrono::seconds(5)); // 模拟5s耗时操作
auto end = std::chrono::steady_clock::now();
// 计算时间间隔
std::chrono::duration duration = std::chrono::duration_cast>(end - start);
// 输出时间间隔
std::cout << "Elapsed time: " << duration.count() << " seconds\n";
return 0;
}
执行结果:
[root@localhost debug]# ./timeTest
Elapsed time: 5.00022 seconds
[root@localhost debug]#
特定时钟上的一个时间。
时钟(Clock),时钟类型包括:
表示时间的持续时间(Duration)
#include
#include
#include
int main()
{
// 使用系统时钟获取当前时间点
// std::chrono::system_clock::time_point currentTime = std::chrono::system_clock::now();
auto currentTime = std::chrono::system_clock::now();
std::this_thread::sleep_for(std::chrono::seconds(2));
auto laterTime = std::chrono::system_clock::now();
// std::chrono::duration duration = std::chrono::duration_cast>(laterTime - currentTime);
auto duration = std::chrono::duration_cast>(laterTime - currentTime);
std::cout << "The duration is: " << duration.count() << std::endl;
auto AfterTime = laterTime + std::chrono::hours(24);
duration = std::chrono::duration_cast>(AfterTime - laterTime);
std::cout << "The duration for 24H is: " << duration.count() << std::endl;
return 0;
}
执行结果:
[root@localhost debug]# ./timeTest
The duration is: 2.00589
The duration for 24H is: 86400
[root@localhost debug]#
提供了基准和刻度。
#include
#include
#include
int main()
{
// std::chrono::steady_clock::time_point steady_start = std::chrono::steady_clock::now();
auto steady_start = std::chrono::steady_clock::now();
std::this_thread::sleep_for(std::chrono::seconds(1));
auto steady_end = std::chrono::steady_clock::now();
auto duration = std::chrono::duration_cast>(steady_end - steady_start);
std::cout << "The steady_clock duration is: " << duration.count() << std::endl;
// std::chrono::high_resolution_clock::time_point high_resolution_start = std::chrono::high_resolution_clock::now();
auto high_resolution_start = std::chrono::high_resolution_clock::now();
std::this_thread::sleep_for(std::chrono::seconds(1));
auto high_resolution_end = std::chrono::high_resolution_clock::now();
duration = std::chrono::duration_cast>(high_resolution_end - high_resolution_start);
std::cout << "The high_resolution_clock duration is: " << duration.count() << std::endl;
return 0;
}
执行结果:
[root@localhost debug.x64-linux-g8]# ./timeTest
The steady_clock duration is: 1.00066
The high_resolution_clock duration is: 1.00085
[root@localhost debug.x64-linux-g8]#
// 获取当前时间的时间戳
#include
#include
#include
int main()
{
auto currentTime = std::chrono::system_clock::now();
auto currentTime_s = std::chrono::time_point_cast(currentTime);
auto currentTime_ms = std::chrono::time_point_cast(currentTime);
auto currentTime_micro = std::chrono::time_point_cast(currentTime);
auto currentTime_ns = std::chrono::time_point_cast(currentTime);
auto valueS = currentTime_s.time_since_epoch().count();
auto valueMS = currentTime_ms.time_since_epoch().count();
auto valueMicroS = currentTime_micro.time_since_epoch().count();
auto valueNS = currentTime_ns.time_since_epoch().count();
std::cout << "Seconds: " << valueS << std::endl;
std::cout << "Milliseconds: " << valueMS << std::endl;
std::cout << "Microseconds: " << valueMicroS << std::endl;
std::cout << "Nanoseconds: " << valueNS << std::endl;
return 0;
}
执行结果:
[root@localhost debug]# ./timeTest
Seconds: 1700544228
Milliseconds: 1700544228873
Microseconds: 1700544228873536
Nanoseconds: 1700544228873536309
[root@localhost debug]#
// 将当前时间格式化为时间字符串
#include
#include
#include
int main()
{
auto currentTime = std::chrono::system_clock::now();
std::time_t t = std::chrono::system_clock::to_time_t(currentTime);
std::cout << "CurrentTime: " << std::put_time(std::localtime(&t), "%F %T") << std::endl;
return 0;
}
执行结果:
[root@localhost debug]# ./timeTest
CurrentTime: 2023-11-20 14:50:35
[root@localhost debug]#