1、ctime
1.1、time_t time(time_t *t)函数
返回值:从1970-01-01 00:00:00 到系统当前时间所经过的时间以秒为单位
参数可为指向time_t的指针或者为nullptr,当参数不为空时,其返回值也存储于参数指针中
#include <ctime>
time_t seconds;
time(&seconds); //time_t time(time_t *t)
// seconds = time(nullptr) 和以上等同
cout << "从1970-01-01起的秒数 = " << seconds << "s" << endl;
运行结果:
从1970-01-01起的秒数 = 1580077542s
1.2、char *time = ctime(const time_t *timer)函数
将time_t类型的时间以字符串形式转换为当前时间
#include <ctime>
char *time = ctime(&seconds);//char *ctime(const time_t *timer)
// 字符串形式 day month year hours:minutes:seconds year\n\0
cout << "当前时间为:" << time;
运行结果:
当前时间为:Mon Jan 27 06:25:42 2020
1.3、struct tm *localtime(time_t *seconds)函数
将time_t类型的指针转换为tm结构的指针,tm结构如下所示
struct tm {
int tm_sec; // 秒,正常范围从 0 到 59,但允许至 61
int tm_min; // 分,范围从 0 到 59
int tm_hour; // 小时,范围从 0 到 23
int tm_mday; // 一月中的第几天,范围从 1 到 31
int tm_mon; // 月,范围从 0 到 11
int tm_year; // 自 1900 年起的年数
int tm_wday; // 一周中的第几天,范围从 0 到 6,从星期日算起
int tm_yday; // 一年中的第几天,范围从 0 到 365,从 1 月 1 日算起
int tm_isdst; // 夏令时
}
#include <ctime>
struct tm *info = localtime(&seconds);
cout << info->tm_hour << "时 " << info->tm_min << "分 " << info->tm_sec << "秒" << endl;
运行结果:
6时 25分 42秒
1.4、clock_t clock(void)函数
返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。为了获取 CPU 所使用的秒数,通常需要除以CLOCKS_PER_SEC
#include <ctime>
clock_t start_t, end_t;
start_t = clock(); //clock_t clock(void)
int i = 0;
while(i < 10000000){
i++;}
end_t = clock();
cout << "程序段运行时间为:" << double(end_t - start_t)/CLOCKS_PER_SEC << "s" << endl;
运行结果:
程序段运行时间为:0.017s
2、chrono
chrono是方便时间日期操作的标准库,它既是相应的头文件名称,也是std命名空间下的一个子命名空间,所有时间日期相关定义均在std::chrono命名空间下。通过这个新的标准库,可以非常方便进行时间日期相关操作。
chrono库主要包含了三个概念:duration, time_point 和 clock。
2.1、Duration
时间范围表示
duration描述的是一段时间范围,比如10秒钟,两个小时,三个月…
template <class Rep, class