我尝试过这个功能:
#include <stdio.h>
#include <time.h>
int main ()
{
time_t seconds;
seconds = time (NULL);
printf ("%ld hours since January 1, 1970", seconds/3600);
return 0;
}
它很有用,但它返回自1970年以来的秒数时间。在我的情况下,我想获得更精确的结果,以区分在同一秒内发生的两个事件。有可能吗?
答案 0 :(得分:3)
使用gettimeofday(3)
。它允许您以微秒为单位获得时间。
#include <stdio.h>
#include <sys/time.h>
int main(int argc, char **argv)
{
struct timeval tv = { 0 };
gettimeofday(&tv, NULL);
printf("sec: %ld usec: %ld\n", tv.tv_sec, tv.tv_usec);
return 0;
}
或clock_gettime()
:
#include <stdio.h>
#include <time.h>
int main(int argc, char **argv)
{
struct timespec ts = { 0 };
clock_gettime(CLOCK_REALTIME, &ts);
printf("sec: %ld nsec: %ld\n", ts.tv_sec, ts.tv_nsec);
return 0;
}
答案 1 :(得分:1)
试试clock_gettime。它以纳秒为单位提供了额外的信息。
答案 2 :(得分:0)
基本标准C未描述分辨率优于1秒的任何日历时间功能。
您必须使用扩展程序。
对于POSIX,请尝试 gettimeofday()
(过时) clock_gettime()
。
对于Windows,显然,您可以使用GetSystemTime()
。