UNIX время в десятичных числах в C - PullRequest
0 голосов
/ 08 марта 2011

Как я могу получить время UNIX в десятичных числах в C, как это делает Python?

Что я имею в C, используя http://bytes.com/topic/c/answers/221083-how-show-unix-time-c

me@laptop$ ./time 
1299556464

Что я хочу, и это работает в Python:

>>> time.time()
1299556249.3973091

Ответы [ 2 ]

1 голос
/ 08 марта 2011

Все с открытым исходным кодом, легко узнать, что делает 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 с разрешением в наносекундах.

1 голос
/ 08 марта 2011
#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 типами.Второй аргумент является строго нулевым указателем;компилятор позаботится об этом принуждении.Любое ненулевое значение для указателя имеет значение, определяемое реализацией.Функция всегда возвращает 0;нет никакого достоинства в тестировании его возвращаемого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...