C语言中的time()

时间:2011-03-31 10:47:36

标签: c time

我尝试过这个功能:


#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年以来的秒数时间。在我的情况下,我想获得更精确的结果,以区分在同一秒内发生的两个事件。有可能吗?

3 个答案:

答案 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()