You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言代码中输出格式为[2023-07-05 15:00:07.680973]的时间戳?

在C语言中打印带微秒的格式化时间戳

要输出格式为[2023-07-05 15:00:07.680973]的时间戳,需要结合秒级时间与微秒级时间处理,以下是可直接运行的实现代码:

#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <string.h>

int main() {
    struct timeval tv;
    struct tm tm_info;
    char timestamp[30]; // 预留足够空间存储格式化后的字符串

    // 获取当前高精度时间(秒+微秒)
    gettimeofday(&tv, NULL);
    // 将秒数转换为本地时间结构体(线程安全版本)
    localtime_r(&tv.tv_sec, &tm_info);

    // 格式化日期与时间到秒的部分
    strftime(timestamp, sizeof(timestamp), "[%Y-%m-%d %H:%M:%S", &tm_info);
    // 拼接6位补零的微秒部分,补全格式
    snprintf(timestamp + strlen(timestamp), sizeof(timestamp) - strlen(timestamp), ".%06ld]", tv.tv_usec);

    // 输出最终时间戳
    printf("%s\n", timestamp);
    return 0;
}

关键说明:

  • gettimeofday():获取当前系统的秒级时间(tv_sec)和微秒级时间(tv_usec),是实现高精度时间的核心函数。
  • localtime_r():线程安全的时间转换函数,把秒数转换为包含年、月、日、时、分、秒的tm结构体,避免多线程环境下的竞态问题。
  • strftime():负责格式化日期和秒级时间,生成[YYYY-MM-DD HH:MM:SS格式的前缀。
  • snprintf():将微秒数补零到6位(微秒范围为0-999999),拼接到前缀后形成完整格式。

注意:该代码依赖POSIX标准接口,Linux/macOS环境下直接用gcc编译即可;Windows平台需替换为GetSystemTimeAsFileTime等系统API实现微秒级时间获取。

内容的提问来源于stack exchange,提问作者Harshith k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 08:52:44