C++ 中推荐使用 chrono 库获取当前时间并进行时间戳与日期转换,结合 ctime 可实现格式化输出。1. 获取时间戳:通过 system_clock::now()获取当前时间点,用 duration_cast 转换为秒或毫秒级时间戳。2. 时间戳转日期:将时间戳转为 time_t,调用 localtime 生成 tm 结构,再用 strftime 格式化为“年 - 月 - 日 时: 分: 秒”。3. 日期转时间戳:构造 tm 结构体(注意年份减 1900、月份减 1),调用 mktime 转换为 time_t 时间戳。4. 高精度计时:使用 high_resolution_clock 记录起止时间,计算差值并转为毫秒等单位输出。chrono 与 ctime 组合无需第三方库,跨平台兼容,适用于大多数时间处理场景。

在 C ++ 中获取当前时间并进行时间戳与日期之间的转换,推荐使用 chrono 库,它是 C ++11 引入的 标准库 ,提供了高精度的时间处理功能。结合 ctime 库,可以轻松实现时间戳到年月日时分秒的 格式化输出。
获取当前时间戳(毫秒 / 秒)
使用 std::chrono::high_resolution_clock 或 system_clock 可以获取当前时间点,然后转换为自纪元(1970-01-01 00:00:00 UTC)以来的毫秒或秒数。
示例代码:
#include <iostream><br>#include <chrono><br>using namespace std;<br>using namespace std::chrono;<br><br>int main() {<br> // 获取当前时间点 <br> auto now = system_clock::now();<br><br> // 转换为时间戳(秒)<br> auto seconds = duration_cast<seconds>(now.time_since_epoch()).count();<br><br> // 转换为时间戳(毫秒)<br> auto milliseconds = duration_cast<milliseconds>(now.time_since_epoch()).count();<br><br> cout << " 时间戳(秒): " << seconds << endl;<br> cout << " 时间戳(毫秒): " << milliseconds << endl;<br><br> return 0;<br>}
立即学习“C++ 免费学习笔记(深入)”;
时间戳转年月日时分秒
将时间戳还原为可读的日期时间格式,需要借助 ctime 中的 localtime 或 gmtime 函数,再用 strftime 格式化输出。
示例代码:
#include <iostream><br>#include <chrono><br>#include <ctime><br><br>int main() {<br> auto now = std::chrono::system_clock::now();<br> auto timestamp = std::chrono::duration_cast<std::chrono::seconds><br> (now.time_since_epoch()).count();<br><br> // 转为本地时间结构 <br> std::time_t t = timestamp;<br> std::tm* local_time = std::localtime(&t);<br><br> // 格式化输出 <br> char buffer[100];<br> std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", local_time);<br><br> std::cout << " 当前日期时间: " << buffer << std::endl;<br><br> return 0;<br>}
日期转时间戳
如果已知年月日时分秒,可以通过构造 std::tm 结构,再用 mktime 转为时间戳。
示例:将 2025-04-05 10:30:00 转为时间戳
#include <iostream><br>#include <chrono><br>#include <ctime><br><br>int main() {<br> std::tm time_info = {};<br> time_info.tm_year = 2025 - 1900; // 年份从 1900 开始 <br> time_info.tm_mon = 4 - 1; // 月份从 0 开始 <br> time_info.tm_mday = 5;<br> time_info.tm_hour = 10;<br> time_info.tm_min = 30;<br> time_info.tm_sec = 0;<br> time_info.tm_isdst = -1; // 自动判断夏令时 <br><br> // 转为时间戳 <br> std::time_t timestamp = std::mktime(&time_info);<br><br> if (timestamp == -1) {<br> std::cout << " 转换失败 " << std::endl;<br>} else {<br> std::cout << " 时间戳: " << timestamp << std::endl;<br>}<br><br> return 0;<br>}
常用时间单位转换
chrono 支持多种时间单位,可通过 duration_cast 转换:
- 纳秒:nanoseconds
- 微秒:microseconds
- 毫秒:milliseconds
- 秒:seconds
- 分钟:minutes
- 小时:hours
例如获取程序运行耗时:
auto start = high_resolution_clock::now();<br>// 执行操作 <br>auto end = high_resolution_clock::now();<br>auto duration = duration_cast<milliseconds>(end - start);<br>std::cout << " 耗时: " << duration.count() << " 毫秒 " << std::endl;
基本上就这些。chrono 库配合 ctime 能满足大多数时间处理需求,无需第三方库,跨平台兼容性好,是现代 C ++ 时间操作的首选方式。