C++如何获取当前系统时间_C++ chrono库与ctime用法详解


C++中获取系统时间常用chrono和ctime;2. chrono精度高、类型安全,适合C++11及以上;3. ctime简单兼容好,适合传统代码;4. 高精度用chrono,快速格式化可用ctime配合strftime;5. 多线程注意localtime线程安全问题。

在C++中获取当前系统时间,常用的方法有两种:使用标准库 和传统的 。两者各有特点,chrono 更现代、类型安全、精度高,适合C++11及以上项目;而 ctime 简单直接,兼容性好,常用于传统代码或快速开发。

使用 获取高精度系统时间

chrono 是C++11引入的时间处理库,提供纳秒级精度,支持时钟、时间点和时间间隔的抽象。

获取当前时间并格式化为年-月-日 时:分:秒:

#include 
#include 
#include 
#include 

std::string getCurrentTime() { auto now = std::chrono::system_clock::now(); auto time_t = std::chrono::system_clock::to_time_t(now);

std::stringstream ss;
ss zuojiankuohaophpcnzuojiankuohaophpcn std::put\_time(std::localtime(&time\_t), "%Y-%m-%d %H:%M:%S");
return ss.str();

}

说明:

  • system\_clock::now() 获取当前时间点
  • to\_time\_t() 转换为传统的 time\_t 类型
  • std::put\_time 配合流操作进行格式化输出
  • 需要包含 支持 put\_time

若需毫秒或微秒精度,可提取时间点中的额外部分:

auto now = std::chrono::system\_clock::now();
auto ms = std::chrono::duration\_cast(
           now.time\_since\_epoch()) % 1000;

使用 快速获取当前时间

ctime 是C风格头文件,使用简单,适合不需要高精度的场景。

#include 
#include 

void printCurrentTime() { std::time_t t = std::time(nullptr); char* timeStr = std::ctime(&t); std::cout << "当前时间: " << timeStr; }

说明:

  • std::time(nullptr) 获取当前时间的秒数(自1970-01-01)
  • std::ctime() 将 time\_t 转为字符串,自动换行
  • 输出格式固定为 "Wed Jun 12 15:30:45 2025\n"

如需自定义格式,使用 std::strftime

char buffer[100];
std::tm\* tm = std::localtime(&t);
std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", tm);
std::cout << buffer << std::endl;

chrono 与 ctime 的选择建议

项目中如何选择?看需求:

  • 需要毫秒、微秒精度 → 用 chrono
  • 做时间差计算、延时控制 → chrono 更直观安全
  • 快速打印日志时间戳 → ctime + strftime 更简洁
  • 跨平台且要求现代C++风格 → 优先 chrono
  • 维护旧代码或嵌入式资源紧张 → 可用 ctime

基本上就这些。两种方法都能有效获取系统时间,根据项目环境和精度要求灵活选用即可。注意多线程下 localtime 非线程安全,必要时用 localtime\_s(Windows)或 localtime\_r(Linux)。


# c++  # linux  # windows  # ios  # win  # stream  # 格式化输出  # 标准库  # 字符串  # 线程  # 多线程  # 不需要  # 都能  # 两种  # 精度高  # 自定义  # 各有  # 有两种  # 如需  # 转换为 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Win11怎么更改电脑名称_Windows 11修改计算机名操作指南【步骤】  Windows的便笺功能如何使用?(桌面备忘技巧)  Mac如何创建和管理多个桌面空间_Mac高效多任务处理【技巧】  如何使用Golang包导出规则_控制函数和变量可见性  Win11怎么更改任务栏位置_修改注册表将Win11任务栏置顶【教程】  Win11怎么更改电脑密码_Windows 11修改本地账户密码【步骤】  PHP中require语句后直接调用返回对象方法的语法解析  PyTorch DDP 多进程训练在 Kaggle 笔记本中的正确启动方式  Python高性能计算项目教程_NumPyCythonGPU并行加速  Mac的Time Machine怎么用_Mac系统备份与数据恢复【完整指南】  手机php怎么转mp4_手机端php文件转mp4app推荐【指南】  Win11资源管理器卡顿怎么办 Win11文件资源管理器重启技巧【优化】  如何在Golang中编写异步函数测试_Golang异步操作测试策略  Win11怎么设置默认视频播放器_Windows 11关联媒体文件打开方式【步骤】  php内存溢出怎么排查_php内存限制调试与优化方法【说明】  C#怎么使用委托和事件 C# delegate与event编程方法  Win11触摸板没反应怎么办_开启Win11笔记本触摸板手势教程【步骤】  Win11怎么设置DNS服务器_Windows11修改网络适配器DNS优选  如何使用Golang实现微服务状态监控_Golang服务运行状态采集方法  Win11怎么关闭防火墙通知_屏蔽Win11安全中心安全警告弹窗【技巧】  PHP 中如何在函数内持久化修改引用变量的指向  Win10怎样卸载自带Edge_Win10卸载Edge浏览器步骤【教程】  Win11怎么设置任务栏大小_Windows11注册表修改TaskbarSi值  mac本地php环境如何开启curl_curl扩展启用与测试步骤详解【汇总】  Win11截图快捷键是什么_Win11自带截图工具使用技巧【汇总】  Win10电脑怎么设置休眠快捷键_Windows10电源按钮功能定义  Win11文件扩展名怎么显示 Win11查看文件后缀名设置【步骤】  Python生成器表达式内存优化_惰性计算说明【指导】  如何在 Go 中比较自定义的数组类型(如 [20]byte)  如何使用Golang实现错误包装与传递_Golangfmt.Errorf%w使用实践  Windows系统文件被保护机制阻止怎么办_权限不足错误处理方案  Python迭代器生成器进阶教程_节省内存与懒加载实战  如何使用Golang处理静态文件缓存_提高页面加载速度  如何使用Golang实现Web表单数据绑定_自动映射字段到结构体  php中self::能调用子类重写的方法吗_静态绑定与重写关系【介绍】  Linux怎么实现内网穿透_Linux安装Frp客户端与服务端配置【方法】  Python字符串处理进阶_切片方法解析【指导】  Linux怎么设置磁盘配额_Linux系统Quota安装与用户空间限制【教程】  Win10怎么卸载鲁大师_Win10彻底卸载鲁大师方法【步骤】  如何提升Golang JSON序列化性能_Golang JSON编码效率优化方法  Win11系统更新后黑屏怎么办 Win11更新黑屏修复教程【方法】  Win11怎么硬盘分区 Win11新建磁盘分区详细教程【步骤】  Golang如何避免指针逃逸_Golang逃逸分析与堆栈优化策略  如何使用Golang实现容器自动化运维_Golang Docker运维管理方法  c++中如何求一个数的平方根_c++ sqrt函数与牛顿迭代法  PHP主流架构如何处理会话管理_Session与Cookie【技巧】  Win11开始菜单打不开_修复Windows 11点击开始图标无响应【教程】  MAC如何快速搜索大文件_MAC磁盘空间分析与冗余数据清理【方法】  微信短链接怎么还原php_用浏览器开发者工具抓包获取【方法】  如何使用Golang编写单元测试_创建Test函数验证业务逻辑 

 2025-12-13

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.