📅  最后修改于: 2023-12-03 14:39:41.437000             🧑  作者: Mango
在 C 编程语言中,获取当前系统时间并将其表示为毫秒的数值是很普遍的需求。下面介绍一些获取毫秒时间的方法。
在 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 函数可以获取当前时间,精度为微秒级别,可以转换为毫秒。该函数在 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 函数可以获取更精确的时钟时间,可以指定时钟类型。它需要使用 -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 表示单调递增时钟,不受系统时钟调整的影响,适合于程序计时。
以上是获取毫秒时间的三种方法,建议根据实际情况选择适合的方法。