C++如何获取当前时间_C++ chrono库时间戳与日期转换教程

10次阅读

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++ 如何获取当前时间_C++ chrono 库时间戳与日期转换教程

在 C ++ 中获取当前时间并进行时间戳与日期之间的转换,推荐使用 chrono 库,它是 C ++11 引入的 标准库 ,提供了高精度的时间处理功能。结合 ctime 库,可以轻松实现时间戳到年月日时分秒的 格式化输出

获取当前时间戳(毫秒 / 秒)

使用 std::chrono::high_resolution_clocksystem_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 中的 localtimegmtime 函数,再用 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 ++ 时间操作的首选方式。

星耀云
版权声明:本站原创文章,由 星耀云 2025-12-13发表,共计2543字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources