c++跨平台获取系统当前时间最常用方式是使用库:先调用time()获取秒级时间戳,再用localtime()或gmtime()转为Struct tm,最后通过strftime()格式化输出。

C++ 获取系统当前时间,最常用且跨平台的方式是使用 (即 C 语言的 time.h)中的标准函数。它不依赖操作系统 API,简洁可靠,适合大多数基础时间获取场景。
一、获取秒级时间戳:time() 函数
time() 返回自 unix 纪元(1970-01-01 00:00:00 UTC)以来经过的秒数,类型为 time_t(通常是 long 或 long long)。
- 调用方式简单:
time_t now = time(nullptr);,传入nullptr表示不写入缓冲区 - 若传入非空指针(如
time_t t;后传&t),结果会同时存入该变量 - 失败时返回
(time_t)(-1),建议简单校验(尤其嵌入式或异常环境)
二、转换为可读时间:localtime() 与 gmtime()
time_t 是整数,需转为日历时间结构 struct tm 才能提取年月日、时分秒等字段。
-
localtime(&now):按本地时区解析,考虑夏令时 -
gmtime(&now):按 UTC(格林威治时间)解析,无时区偏移 - 两者均返回
struct tm*,注意返回的是静态内存地址,不可长期保存或跨线程共享 -
struct tm中月份从0开始(0=Jan),年份为距 1900 的偏移(如 2024 →tm_year = 124)
三、格式化输出:strftime() 安全转字符串
直接用 printf 输出 tm 成员易出错,推荐用 strftime() 将 struct tm 格式化为指定格式的字符串。
立即学习“C++免费学习笔记(深入)”;