你能帮我如何将 struct timeval
实例格式化为人类可读的格式,如“2010-01-01 15:35:10.0001”吗?
最佳答案
您需要手动附加微秒部分,因为它不在 struct tm
中 strftime
() 对付。这是一个片段:
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/