首页 关于我们 成功案例 网络营销 电商设计 新闻中心 联系方式
QQ联系
电话联系
手机联系
QQ联系
电话联系
手机联系

C++如何获取当前系统时间?(代码示例)

发布时间:2025-12-31 00:00
发布者:裘德小鎮的故事
浏览次数:
C++中获取当前系统时间最推荐使用std::chrono::system_clock::now(),适用于高精度计算;需格式化输出时转为time_t配合std::put_time或C++20的std::format;传统方法time+localtime兼容性好但需注意线程安全。

在C++中获取当前系统时间,最常用且跨平台的方式是使用 (C++11起)或 (传统C风格)。下面给出几种主流方法,按推荐程度排序,并附可直接运行的代码示例。

std::chrono 获取高精度时间点(推荐)

适用于需要毫秒/微秒级精度、或做时间差计算的场景。它返回的是“时间点”(time_point),不是格式化字符串,但更现代、类型安全。

// 示例:获取当前时间点,并转为秒级时间戳(自1970-01-01以来的秒数)

#include 
#include 
#include 

int main() { auto now = std::chrono::system_clock::now(); auto seconds = std::chrono::system_clock::to_time_t(now); std::cout << "当前时间(本地):" << std::ctime(&seconds); // 自动带换行 return 0; }

// 若需毫秒值(整数):

auto ms = std::chrono::duration_cast(now.time_since_epoch()).count();
std::cout << "毫秒时间戳:" << ms << std::endl;

std::time + std::localtimestd::gmtime(兼容性好)

适合需要格式化输出(如“2025-05-20 14:30:45”)的场景。注意:localtime 是本地时区,gmtime 是UTC。

#include 
#include 
#include 
#include 

int main() { std::time_t t = std::time(nullptr); std::tm* lt = std::localtime(&t); // 注意:非线程安全;多线程建议用 localtime_r(POSIX)或 _localtime_s(Windows)

std::ostringstream oss;
oss << std::put_time(lt, "%Y-%m-%d %H:%M:%S");
std::cout << "当前本地时间:" << oss.str() << std::endl;
return 0;

}

⚠️ 提示:std::localtime 返回静态缓冲区指针,不建议在多线程中直接使用;生产环境可用 std::strftime 配合栈上 std::tm 变量避免风险。

std::format(C++20,简洁美观)

如果你的编译器支持 C++20(如 GCC 13+、Clang 15+、MSVC 2025 17.5+),这是最干净的格式化方式:

#include 
#include 
#include 

int main() { auto now = std::chrono::system_clock::now(); std::time_t t = std::chrono::system_clock::to_time_t(now); std::cout << std::format("当前时间:{:%Y-%m-%d %H:%M:%S}", std::chrono::system_clock::to_time_t(now)) << std::endl; return 0; }

基本上就这些。日常开发优先选 std::chrono::system_clock::now(),需要打印就转 time_t 配合 std::put_timestd::format;老项目兼容 C++98/03 可继续用 time + localtime + strftime


# 线程  # 需注意  # 最常用  # 可直接  # 几种  # 推荐使用  # 这是  # 的是  # 性好  # 适用于  # 多线程  # windows  # 指针  # 字符串  # format  # 格式化输出  # stream  # win  # ios  # c++  # ai  #  


相关文章: Java 中实现智能金额单位(k/M/B)的简洁封装方案  OpenAI 人均股票薪酬达 150 万美元  WPS表格如何冻结窗格固定表头_视图栏点冻结选首行【操作】  爱奇艺发布 2026 年电影分账合作新规,网络电影合作方支持自主排期  喜临门更名,一场准备了十余年的科技亮剑  在Java中如何使用Collections工具类_Java集合操作方法解析  标题:Vue + Vuex 项目中合理使用 JWT 进行身份认证的完整实践指南  Linux系统巡检体系建设教程_自动化巡检落地方案  Quark浏览器如何导出书签文件_Quark浏览器书签备份与格式选择【步骤】  composer怎么在Docker容器启动时自动安装依赖_Dockerfile指令优化【方法】  智谱AI营销文案生成怎么用_智谱AI营销文案生成使用方法详细指南【教程】  首发自研长江SoC!摩尔线程AIBOOK笔记本图赏  容声三款嵌入式冰箱实测:颜值与储鲜双在线的厨房美学担当  B站账号登录入口 哔哩哔哩官网网页版平台  仙人巳月全招式解析灵动蛇影掌控战场  批改网AI检测工具怎么关联班级学生_批改网AI检测工具班级绑定与学生管理【步骤】  小红书年度报告怎么看 小红书年度总结查看入口指南【教程】  铁路12306app抢票功能怎么用_12306如何自动抢票设置指南说明  composer安装Swoole环境要求_依赖检查与编译参数说明【指南】  Go 中 Goroutine 死锁问题的根源与正确解决方法  电脑浏览器广告弹窗太多怎么办_浏览器安装广告拦截插件教程【超详细】  jimdo怎么插入html5画布_jimdo画布html5标签添加与绘制基础【步骤】  能源行业“鸿蒙化”进入规模共创期,大批能源领域应用完成适配  如何在Golang中操作嵌套指针_Golang多级指针访问与修改  C++如何使用std::bind和占位符?(函数封装)  Windows怎样关闭开始菜单广告_Windows关闭开始菜单广告设置【步骤】  如何让Composer在更新包时保留.git目录?(--prefer-source)  又一国内大厂首曝重磅新品!《代号:Lovania》美术风格超独特  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Python函数调用性能_栈帧分析说明【指导】 


相关栏目: 【 行业资讯17850 】 【 软件资源51899 】 【 网站技术89748 】 【 百度推广44206 】 【 网络营销84187 】 【 运营推广93002 】 【 AI优化91086 】 【 网络优化117696 】 【 网址导航107142