通八洲科技

C++如何获取当前时间?C++ chrono库日期和时间处理教程【C++11】

日期:2026-01-02 00:00 / 作者:冰火之心
C++11起推荐用std::chrono::system_clock::now()获取纳秒级time_point;转time_t后配合localtime/gmtime和std::put_time可格式化输出;duration_cast可提取毫秒/微秒时间戳;注意system_clock基于UTC,localtime非线程安全。

在C++11及以后,推荐用std::chrono配合std::system_clock获取当前时间;它类型安全、精度高、无平台依赖,比旧的ctime更现代可靠。

获取当前时间点(time_point)

std::chrono::system_clock::now()返回一个time_point,代表系统时钟下的当前时刻,单位是纳秒级(具体精度由实现决定)。

转成可读的年月日时分秒(C风格)

若要输出“2025-05-20 14:30:45”这类格式,需先转为time_t,再用localtimegmtime解析:

获取毫秒/微秒级时间戳(常用于日志或性能统计)

直接从time_point提取整数型时间戳:

立即学习“C++免费学习笔记(深入)”;

注意时区和线程安全

std::chrono::system_clock本身不带时区信息,它提供的是UTC时间点;localtime等函数不是线程安全的(返回静态tm结构),多线程中应改用localtime_r(POSIX)或_localtime64_s(Windows),或改用C++20的时区扩展(C++11不支持)。

基本上就这些。C++11的chrono不复杂但容易忽略细节——记牢time_point是起点,转换才是关键。