C中的UNIX时间小数

时间:2011-03-08 04:00:18

标签: c

如何在C中获得小时的UNIX时间,就像Python那样?

我使用http://bytes.com/topic/c/answers/221083-how-show-unix-time-c

在C中拥有的内容
me@laptop$ ./time 
1299556464

我想要什么,它适用于Python:

>>> time.time()
1299556249.3973091

2 个答案:

答案 0 :(得分:1)

#include <sys/time.h>
struct timeval tv;

gettimeofday(&tv, 0);

printf("%d.%06d", (int)tv.tv_sec, (int)tv.tv_usec);  // Corrected -> to . (it's late!)

据官方统计,POSIX 2008已弃用gettimeofday(),但在可预见的未来可能会出现这种情况。在接下来的四分之一世纪左右,演员阵容足够安全;之后,32位int类型可能会出现问题。第二个参数严格地是空指针;编译器会处理这种胁迫。指针的任何非null值都具有实现定义的含义。该函数始终返回0;在测试其回报价值方面没有任何优点。

答案 1 :(得分:1)

一切都是开源的,很容易找到Python正在做的事情。

来自Python/Modules/timemodule.c

static double
floattime(void)
{
    /* There are three ways to get the time:
      (1) gettimeofday() -- resolution in microseconds
      (2) ftime() -- resolution in milliseconds
      (3) time() -- resolution in seconds

还有POSIX函数clock_gettime,其分辨率为纳秒级。