讲师中心 微信公众号
AI工具推荐 视频效率加速

C++ 如何获取系统的当前毫秒计数值

落晨大大_8171

落晨大大_8171

发布时间:2026-08-25 15:53:18

|

720人浏览过

|

来源于php中文网

原创

推荐用 std::chrono::steady_clock 获取毫秒级单调时间戳(程序启动起算),用 std::chrono::system_clock 获取 Unix 毫秒时间戳(UTC,自1970年起),二者语义不同不可混用。

c++ 如何获取系统的当前毫秒计数值

用 std::chrono::steady_clock 获取毫秒级时间戳(推荐)

现代 C++ 最可靠的方式是使用 std::chrono::steady_clock,它不随系统时钟调整跳变,适合做时间差或单调递增计数。获取当前毫秒值本质是「从纪元起的毫秒数」,但注意:steady_clock 的纪元是实现定义的(通常为程序启动或系统启动),不能直接当“系统时间”用;若你真正需要的是“自 Unix 纪元以来的毫秒数”,得换方案。

实操建议:

C++14
C++14

C++14 对 C++11 的修正与增强版本,适合旧系统维护和较老工具链兼容。

下载
  • 用 std::chrono::steady_clock::now().time_since_epoch().count() 得到纳秒级整数,再除以 1'000'000 转毫秒(注意类型溢出风险,推荐 long long)
  • 更安全写法:std::chrono::duration_cast<:chrono::milliseconds>(std::chrono::steady_clock::now().time_since_epoch()).count()</:chrono::milliseconds>
  • 避免用 system_clock 直接取毫秒——它可能因 NTP 调整回拨,导致返回值突降

用 std::chrono::system_clock 获取 Unix 毫秒时间戳(需转本地时间)

如果你要的是类似 JavaScript Date.now() 那种“自 1970-01-01 00:00:00 UTC 起的毫秒数”,必须用 std::chrono::system_clock,并确保时区处理正确(它返回的是 UTC 时间)。

常见错误现象:直接调 system_clock::to_time_t 再用 localtime,结果被本地时区偏移污染,毫秒值没错,但后续做时间比较或网络传输时容易误以为是本地时间。

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

实操建议:

  • 获取毫秒值本身只需:std::chrono::duration_cast<:chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count()</:chrono::milliseconds>
  • 该值始终是 UTC 毫秒数,和本地 TZ 环境变量无关,可直接用于日志打点、API 时间戳等场景
  • 不要试图用 std::chrono::zoned_time(C++20)去“转成本地毫秒”——毫秒数值本身没有时区,加时区只是格式化显示的事

Windows 下用 GetTickCount64() 的局限性

Windows API 的 GetTickCount64() 返回系统启动后毫秒数,轻量、无锁、高精度(实际分辨率约 10–16ms),但它不是“系统当前时间”,也不跨重启连续,且在系统运行超 49.7 天后会绕回(虽然 64 位版不会溢出,但语义仍是 uptime)。

使用场景仅限:进程内计时、超时判断、性能采样间隔。不能用于记录事件绝对时间或与外部系统对时。

实操建议:

  • 头文件需包含 <windows.h>,链接默认库,无需额外配置
  • 返回值类型是 ULONGLONG,直接赋给 uint64_t 即可
  • 别和 GetTickCount()(32 位版)混用,后者在约 49.7 天后归零,极易引发逻辑错误

Linux/macOS 下避免用 clock_gettime(CLOCK_MONOTONIC) 手动封装

虽然 POSIX 提供了高精度单调时钟,但 C++11 起 std::chrono::steady_clock 在主流编译器(GCC/Clang)底层就映射到 CLOCK_MONOTONIC,手动调用反而增加可移植性负担和错误概率(比如忘记检查返回值、误用 CLOCK_REALTIME)。

容易踩的坑:

  • 用 CLOCK_REALTIME 替代 CLOCK_MONOTONIC:前者受系统时间修改影响,两次调用可能返回更小的值
  • 忽略 clock_gettime 的返回值(失败时为 -1),导致未初始化的 timespec 结构体被读取
  • 把秒+纳秒字段简单相加却不考虑纳秒进位(如 1.5 秒 = 1 秒 + 500'000'000 纳秒,不是 1500 毫秒)

真正要注意的其实是精度来源和语义差异:毫秒值本身不难取,难的是搞清你要的是 uptime、UTC 时间戳,还是单调差值。选错时钟类型,后期排查时间跳跃或负延时会非常痛苦。

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

相关专题

更多
c++和c语言的区别有哪些
c++和c语言的区别有哪些

c++和c语言的区别:1、面向对象编程(OOP)支持不同;2、新增特性不同;3、标准库不同;4、编译方式不同;5、命名空间不同等等。想了解更多c++的相关内容,可以阅读本专题下面的文章。

2248

2024.03.14

c++和python学习顺序推荐
c++和python学习顺序推荐

一般建议先学习C++,再学习Python,因为这样可以逐步从较为底层的编程语言向更高级的语言过渡。想了解更多python的相关内容,可以阅读本专题下面的文章。

1019

2024.03.14

python和c++学习性价比分析
python和c++学习性价比分析

Python易于学习,广泛应用于Web开发、数据科学和人工智能等领域,但性能较低。C语言性能高,适用于对性能要求较高的场景,如游戏开发和系统编程,但学习曲线陡峭,错误处理复杂。想了解更多python的相关内容,可以阅读本专题下面的文章。

427

2024.03.14

c语言和c++一样吗
c语言和c++一样吗

c语言和c++是两种不同的编程语言,虽然有相似之处,但存在显著差异。c语言专注于过程式编程和系统级开发,以简洁、高效著称。c++作为c语言的超集,引入了面向对象编程,增强了代码组织和管理能力,但学习曲线也更陡峭。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

327

2024.03.14

c语言和c++先学哪个好
c语言和c++先学哪个好

初学者选择学习c语言还是c++语言,需要根据个人学习目标、背景以及编程兴趣和预期应用方向来决定。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

406

2024.03.14

c语言和c++的区别和联系
c语言和c++的区别和联系

c语言和c++是计算机科学领域应用广泛的编程语言。虽然它们有着相似的基础,但它们在语言类型、语法功能和内存管理方面存在着显著差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

580

2024.03.14

c++软件中文更改教程
c++软件中文更改教程

对于 ide,可通过打开设置,找到语言设置,选择中文,并保存更改。对于非 ide 应用程序,可查找设置或选项,选择语言设置,更改为中文,并保存更改。想了解更多c++的相关内容,可以阅读本专题下面的文章。

1409

2024.03.21

python和java和c++学习性价比分析
python和java和c++学习性价比分析

Python以其易学性、丰富的库和活跃的社区而著称,适合数据科学、人工智能和Web开发。Java以其跨平台性、企业级应用开发和Android应用开发而闻名。C++以其底层控制能力、高效性能和游戏开发而著称。选择哪种语言取决于个人兴趣、职业方向和特定需求。想了解更多python和java和c++的相关内容,可以阅读本专题下面的文章。

1217

2024.03.22

Linux 新手先学哪些命令
Linux 新手先学哪些命令

Linux新手命令专题汇集终端基础、文件目录操作、文本查看、软件安装和权限管理等入门文章,帮助按实际任务练习常用命令并建立命令行操作习惯。

0

2026.10.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C++ Core Guidelines
C++ Core Guidelines

共0课时 | 0人学习

C++ Reference
C++ Reference

共0课时 | 0人学习

C++ 官方标准说明
C++ 官方标准说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn