c - 将时间间隔结构化为可打印格式

标签 c linux

你能帮我如何将 struct timeval 实例格式化为人类可读的格式,如“2010-01-01 15:35:10.0001”吗?

最佳答案

您需要手动附加微秒部分,因为它不在 struct tmstrftime () 对付。这是一个片段:

struct timeval tv;
time_t nowtime;
struct tm *nowtm;
char tmbuf[64], buf[64];

gettimeofday(&tv, NULL);
nowtime = tv.tv_sec;
nowtm = localtime(&nowtime);
strftime(tmbuf, sizeof tmbuf, "%Y-%m-%d %H:%M:%S", nowtm);
snprintf(buf, sizeof buf, "%s.%06ld", tmbuf, tv.tv_usec);

请注意我们如何使用 06 的显式精度来获得一个零填充的微秒字段。由于微秒从 0 到 999,999,因此必须始终将其填充为 6 位数字。我们不想歪曲例如57 微秒等于 570,000(比较“1.57”与“1.000057”)。

关于c - 将时间间隔结构化为可打印格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2408976/

相关文章:

c - 传递私有(private)变量时出现 Openmp 段错误,但在并行区域内声明变量时不会出现

Linux内核sendpage函数

c++ - 加载库时出错

linux - 如何在 Linux 中从命令行杀死一个进程及其所有线程?

c - 函数指针局部变量的意外值

c - Valgrind 提示调用 fgets

c - 动态内存分配 - 二维数组

c - 删除前导空格的函数不会更改调用者中的字符串?

linux - 段错误(核心转储)、linux、g++

ruby - 使用 Puppet list 自动创建 Nagios 主机组