C语言 用gettimeofday毫秒级显示
时间: 2024-08-14 13:10:20 浏览: 55
在C语言中,`gettimeofday()` 函数通常用于获取当前的时间戳,但它本身返回的是结构体`struct timeval`,包含了秒数和微秒数,精确到千分之一秒,即0.001秒。如果你需要得到毫秒级别的精度,你需要对这个时间戳做进一步的计算。
首先,包括必要的头文件:
```c
#include <time.h>
#include <stdio.h>
```
然后,你可以像下面这样使用 `gettimeofday()` 结合 `div_t` 或者 `stdint.h` 的 `uint64_t` 类型来获得毫秒级时间:
```c
#include <stdint.h>
// 获取当前时间戳(以毫秒为单位)
void get_time_in_millis(struct timeval *tv) {
uint64_t usecs = ((uint64_t) tv->tv_usec) + ((uint64_t) tv->tv_sec * 1000000);
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
// 使用 div_t 或者转换成整数并取余的方式处理
// div_t result;
// result.quot = usecs / 1000; // 秒
// result.rem = usecs % 1000; // 毫秒
tv->tv_usec = (usecs % 1000) * 1000; // 直接设置毫秒部分
tv->tv_sec = (usecs - tv->tv_usec) / 1000000; // 更新秒数部分
}
int main() {
struct timeval now;
get_time_in_millis(&now);
printf("Current time in milliseconds: %ld.%03ld\n", now.tv_sec, now.tv_usec / 1000);
return 0;
}
```
请注意,`clock_gettime()` 函数用于获取更准确的高分辨率时间,而 `CLOCK_MONOTONIC` 表示相对单调计时器(不受系统时间调整影响)。上述代码展示了如何将 `gettimeofday` 结果转换为毫秒格式。
阅读全文