Cpp time 示例
1: time 介绍
-
std::chrono::duration
-
std::chrono::time_point
-
std::chrono::system_clock
-
std::chrono::steady_clock
-
std::chrono::high_resolution_clock
-
std::time_t
-
std::tm
2: time code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#include <chrono>
#include <iostream>
#include <thread>
#include <ctime>
#include <iomanip>
int main() {
// std::chrono::duration<Rep ,Period> 表示一段时间
std::chrono::duration<int> time_out_1(3); // time_out 设置为3S
std::chrono::duration<int, std::ratio<1>> time_out_2(3); // time_out 设置为3S
std::chrono::duration<int, std::milli> time_out_3(3000); // time_out 设置为3000 ms
std::chrono::duration<int,std::ratio<1>> sum_duration =
std::chrono::duration_cast<std::chrono::duration<int>>(time_out_1) +
std::chrono::duration_cast<std::chrono::duration<int>>(time_out_2) +
std::chrono::duration_cast<std::chrono::duration<int>>(time_out_3);
std::cout << "sum_duration = " << sum_duration.count() << " seconds" << std::endl;
std::chrono::duration<long long,std::ratio<1,1000>> sum_duration_mill =std::chrono::duration_cast<std::chrono::milliseconds>(sum_duration);
std::cout << "sum_duration_mill = " << sum_duration_mill.count() << " millseconds" << std::endl;
// std::chrono::time_point<>; 表示时间点
std::chrono::system_clock::time_point t1=std::chrono::system_clock::now(); // 获取当前时间点
std::this_thread::sleep_for(std::chrono::seconds(3)); // sleep 3 s
std::chrono::system_clock::time_point t2=std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_time=t2-t1;
std::cout << "Start time: " << std::chrono::system_clock::to_time_t(t1) << std::endl;
std::cout << "End time: " << std::chrono::system_clock::to_time_t(t2) << std::endl;
std::cout << "Time elapsed: " << elapsed_time.count() << " seconds" << std::endl;
// std::chrono::system_clock 类提供给了从系统实时时钟上获取当前时间功能。
// 可以调用std::chrono::system_clock::now()来获取当前的时间
// std::chrono::steady_clock 能访问系统稳定时钟。
// 可以通过调用std::chrono::steady_clock::now()获取当前的时间。设备上显示的时间,与使用std::chrono::steady_clock::now()获取的时间没有固定的关系。稳定时钟是无法回调的
// td::chrono::high_resolution_clock类能访问系统高精度时钟。和所有其他时钟一样,通过调用std::chrono::high_resolution_clock::now()来获取当前时间
// std::chrono::high_resolution_clock可能是std::chrono::system_clock类或std::chrono::steady_clock类的别名,也可能就是独立的一个类
// 通过std::chrono::high_resolution_clock具有所有标准库支持时钟中最高的精度,这就意味着使用
// std::chrono::high_resolution_clock::now()要花掉一些时间。所以,当你再调用std::chrono::high_resolution_clock::now()的时候,需要注意函数本身的时间开销。
// datetime
// 获取当前时间点
auto now=std::chrono::system_clock::now();
// 将时间点转为时间戳 time_t
std::time_t time_t_now =std::chrono::system_clock::to_time_t(now);
// 将时间戳转换为 std::tm 结构体
std::tm* time_info = std::localtime(&time_t_now);
std::cout << "Current DateTime: " << std::put_time(time_info, "%Y-%m-%d %H:%M:%S") << std::endl;
return 0;
}
|
文章作者
lucas
上次更新
2023-08-25
(1bc9fd7)