欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > C++跨平台获取当前时间方法 [学习笔记]

C++跨平台获取当前时间方法 [学习笔记]

2025/9/27 22:01:33 来源:https://blog.csdn.net/qq_43314095/article/details/144676363  浏览:    关键词:C++跨平台获取当前时间方法 [学习笔记]

在 C++ 中,获取当前时间以及计算程序运行时间可以使用标准库提供的跨平台方法,例如 <chrono><ctime>

以下是几种方法及其具体用法:


1. 使用 <chrono> 计算程序运行时间(推荐)

<chrono> 是 C++11 引入的库,可以方便地进行高精度时间点和时间段的计算。

示例:计算程序运行时间
#include <iostream>
#include <chrono> // C++11 时间库
using namespace std;int main() {// 记录开始时间auto start = chrono::high_resolution_clock::now();// 模拟程序运行for (volatile int i = 0; i < 1e7; ++i);// 记录结束时间auto end = chrono::high_resolution_clock::now();// 计算耗时chrono::duration<double> elapsed = end - start;cout << "程序运行耗时: " << elapsed.count() << " 秒" << endl;return 0;
}
输出结果
程序运行耗时: 0.015123 秒
解释
  • chrono::high_resolution_clock::now() 获取当前时间点。
  • chrono::duration<double> 表示持续时间,elapsed.count() 返回以秒为单位的时间长度。

2. 获取当前日期和时间(可打印)

如果需要获取当前时间(如 2024-12-23 15:30:45),可以使用 <ctime> 结合 std::chrono

示例:获取当前时间
#include <iostream>
#include <ctime>
using namespace std;int main() {// 获取当前时间time_t now = time(nullptr); // 获取时间戳tm* local_time = localtime(&now); // 转换为本地时间// 打印时间cout << "当前时间: " << 1900 + local_time->tm_year << "-" // 年<< 1 + local_time->tm_mon << "-"    // 月<< local_time->tm_mday << " "       // 日<< local_time->tm_hour << ":"       // 时<< local_time->tm_min << ":"        // 分<< local_time->tm_sec << endl;      // 秒return 0;
}
输出结果
当前时间: 2024-12-23 15:30:45

3. 结合 <chrono><ctime>

C++ 提供了在 chrono 时间点与 ctime 时间结构之间进行转换的方法。

示例:将 chrono 转换为可读格式
#include <iostream>
#include <chrono>
#include <ctime>
using namespace std;int main() {// 获取当前时间点auto now = chrono::system_clock::now();// 转换为 time_ttime_t current_time = chrono::system_clock::to_time_t(now);// 转换为本地时间tm* local_time = localtime(&current_time);cout << "当前时间: "<< 1900 + local_time->tm_year << "-"<< 1 + local_time->tm_mon << "-"<< local_time->tm_mday << " "<< local_time->tm_hour << ":"<< local_time->tm_min << ":"<< local_time->tm_sec << endl;return 0;
}

4. 使用 <chrono> 计算毫秒级、微秒级时间

如果需要更高精度的时间(如毫秒或微秒),可以使用 <chrono> 中的 millisecondsmicroseconds

示例:计算运行时间(毫秒)
#include <iostream>
#include <chrono>
using namespace std;int main() {auto start = chrono::steady_clock::now();// 模拟工作for (volatile int i = 0; i < 1e7; ++i);auto end = chrono::steady_clock::now();auto elapsed = chrono::duration_cast<chrono::milliseconds>(end - start);cout << "程序运行耗时: " << elapsed.count() << " 毫秒" << endl;return 0;
}

5. 支持的跨平台时间函数

功能方法跨平台支持
获取当前时间点std::chrono::system_clock::now()
高精度时间测量std::chrono::high_resolution_clock::now()
转换为可读格式std::chrono::system_clock::to_time_t()
本地时间/UTC 时间std::localtime() / std::gmtime()
计算时间差std::chrono::duration

总结

  • 高精度计时:使用 <chrono>,推荐 high_resolution_clocksteady_clock
  • 获取当前时间:使用 <chrono><ctime> 的组合。
  • 跨平台兼容性<chrono> 是 C++11 标准库的一部分,完全支持主流平台。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com