c
time.h库
<time.h>
是C标准库中的一个头文件,提供了处理日期和时间的函数和类型。提供了各种日期和时间操作的函数,例如获取当前时间、格式化时间、计算时间间隔。常用于需要进行时间计算和日期时间处理的程序。
time()
函数:返回从 1970 年 1 月 1 日 00:00:00 UTC 到当前的秒数。
#include <stdio.h>
#include <time.h>
int main() {
time_t t = time(NULL);
printf("当前时间的秒数: %ld\n", t);
return 0;
}
localtime()
函数:将 time()
返回的时间值转换为本地时间的结构体 tm
。
#include <stdio.h>
#include <time.h>
int main() {
time_t t = time(NULL);
struct tm *local = localtime(&t);
printf("年: %d\n", local->tm_year + 1900);
printf("月: %d\n", local->tm_mon + 1);
printf("日: %d\n", local->tm_mday);
return 0;
}
C++
<ctime>
库
<ctime>
:是C标准库中的一个头文件,在C++中被包含在<iostream>
中,该头文件提供了将time_t
格式的时间转换为字符串的函数ctime()
。用于将time_t
格式的时间转换为字符串格式,或进行简单的时间格式化输出。
ctime()
函数:将 time_t
类型的时间值转换为字符串形式。
#include <iostream>
#include <ctime>
int main() {
time_t t = time(NULL);
std::cout << "当前时间: " << ctime(&t);
return 0;
}
<chrono>
库
<chrono>
:是C++标准库的一部分,它是随着C++11标准引入的。引入<chrono>
库的主要目的是为了提供更清晰、更准确和类型安全的时间处理方式。提供了对时间间隔的表示和操作,以及时钟的概念。常用于需要高精度时间测量、时间间隔计算或与时间相关的操作的程序。
#include <iostream>
#include <chrono>
int main() {
// 获取当前系统时间
auto now = std::chrono::system_clock::now();
// 将时间转换为时间点
std::time_t currentTime = std::chrono::system_clock::to_time_t(now);
// 输出当前时间
std::cout << "当前时间: " << std::ctime(¤tTime);
return 0;
}
-
获取当前时间
#include <iostream>
#include <chrono>
int main() {
// 获取当前系统时间点
auto now = std::chrono::system_clock::now();
std::cout << "当前时间: " << now.time_since_epoch().count() << std::endl;
return 0;
}
-
计算时间间隔
#include <iostream>
#include <chrono>
int main() {
auto start = std::chrono::steady_clock::now();
// 模拟一些耗时操作
for (int i = 0; i < 1000000; ++i) {}
auto end = std::chrono::steady_clock::now();
// 计算时间间隔
std::chrono::duration<double> elapsed_seconds = end - start;
std::cout << "耗时: " << elapsed_seconds.count() << " 秒" << std::endl;
return 0;
}
-
时间单位转换
#include <iostream>
#include <chrono>
int main() {
std::chrono::milliseconds ms(5000); // 5000 毫秒
// 转换为秒
std::chrono::seconds s = std::chrono::duration_cast<std::chrono::seconds>(ms);
std::cout << "转换为秒: " << s.count() << std::endl;
// 转换为微秒
std::chrono::microseconds us = std::chrono::duration_cast<std::chrono::microseconds>(ms);
std::cout << "转换为微秒: " << us.count() << std::endl;
return 0;
}
-
睡眠指定时间
#include <iostream>
#include <chrono>
#include <thread>
int main() {
std::cout << "开始" << std::endl;
// 睡眠 3 秒
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << "3 秒后" << std::endl;
return 0;
}
-
时钟类型
#include <iostream>
#include <chrono>
int main() {
// 系统时钟
auto now_system = std::chrono::system_clock::now();
std::cout << "系统时钟: " << now_system.time_since_epoch().count() << std::endl;
// 稳定时钟
auto now_steady = std::chrono::steady_clock::now();
std::cout << "稳定时钟: " << now_steady.time_since_epoch().count() << std::endl;
// 高精度时钟(如果可用)
auto now_high_resolution = std::chrono::high_resolution_clock::now();
std::cout << "高精度时钟: " << now_high_resolution.time_since_epoch().count() << std::endl;
return 0;
}
-
时间点的比较
#include <iostream>
#include <chrono>
int main() {
auto time1 = std::chrono::system_clock::now();
std::this_thread::sleep_for(std::chrono::seconds(2));
auto time2 = std::chrono::system_clock::now();
if (time1 < time2) {
std::cout << "time1 早于 time2" << std::endl;
} else if (time1 > time2) {
std::cout << "time1 晚于 time2" << std::endl;
} else {
std::cout << "time1 等于 time2" << std::endl;
}
return 0;
}
这只是 <chrono>
库的一些常见用法,它还提供了更多高级和灵活的功能,以满足各种复杂的时间处理需求。