📌  相关文章
📜  c 以毫秒为单位获取时间 - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:39:41.437000             🧑  作者: Mango

以毫秒为单位获取时间

在 C 编程语言中,获取当前系统时间并将其表示为毫秒的数值是很普遍的需求。下面介绍一些获取毫秒时间的方法。

方法一:time.h 库

在 C 语言标准库中,有一个函数 clock() 可以返回程序运行到目前为止的 CPU 时间(单位是时钟节拍数)。如果将其除以 CLOCKS_PER_SEC(每秒时钟节拍数),可以得到秒数。进一步乘以 1000,即可得到毫秒数。

#include <time.h>
#include <stdio.h>

int main() {
    clock_t ms = clock() * 1000 / CLOCKS_PER_SEC;
    printf("Milliseconds: %ld\n", ms);
    return 0;
}

该代码片段的输出如下:

Milliseconds: 1234567

缺点:clock() 函数返回的是 CPU 时间,即程序经过的时间,如果系统进入了睡眠或暂停状态,需要加上相应的时间才能得到实际的系统时间。

方法二:gettimeofday 函数

gettimeofday 函数可以获取当前时间,精度为微秒级别,可以转换为毫秒。该函数在 UNIX 系统中可用,Windows 中需要使用第三方库。

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

int main() {
    struct timeval tp;
    gettimeofday(&tp, NULL);
    long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000;
    printf("Milliseconds: %ld\n", ms);
    return 0;
}

该代码片段的输出如下:

Milliseconds: 1234567890
方法三:clock_gettime 函数

clock_gettime 函数可以获取更精确的时钟时间,可以指定时钟类型。它需要使用 -lrt 选项进行编译链接,运行时需要 root 权限。

#include <time.h>
#include <stdio.h>

int main() {
    struct timespec ts;
    clock_gettime(CLOCK_MONOTONIC, &ts);
    long int ms = ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
    printf("Milliseconds: %ld\n", ms);
    return 0;
}

该代码片段的输出如下:

Milliseconds: 1234567890

其中 CLOCK_MONOTONIC 表示单调递增时钟,不受系统时钟调整的影响,适合于程序计时。

以上是获取毫秒时间的三种方法,建议根据实际情况选择适合的方法。