Как я могу получить UTCTime в миллисекунде с 1 января 1970 на языке C

Там какой-либо путь состоит в том, чтобы получить миллисекунды и его дробную часть с 1970 с помощью time.h на языке C?

21
задан Cœur 2 January 2017 в 18:37
поделиться

4 ответа

Unix-время или Posix time - время в секундах с той эпохи, о которой вы говорили. Ответ

bzabhi верен: Вы просто умножаете Unix-время на 1000, чтобы получить миллисекунды.

Помните, что все значения миллисекунд, возвращаемые по Unix-время, будут умножены на 1000 (как 12345678000). Разрешение по-прежнему составляет всего 1 секунду.

Невозможно получить дробную часть

Комментарий Павла также верен. Штемпель времени в Unix не учитывает прыжковые секунды. Это делает еще менее разумным полагаться на преобразование в миллисекунды

.
1
ответ дан 29 November 2019 в 06:42
поделиться

Это не стандартный C, но gettimeofday() присутствует как в SysV, так и в BSD производных системах, и находится в POSIX. Она возвращает время с эпохи в структурированной таймeval:

struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};
6
ответ дан 29 November 2019 в 06:42
поделиться

Если вам нужно разрешение в миллисекундах, вы можете использовать gettimeofday() в Posix. Для реализации Windows смотрите функцию gettimeofday для windows.

#include <sys/time.h>

...

struct timeval tp;
gettimeofday(&tp);
long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000;
9
ответ дан 29 November 2019 в 06:42
поделиться

Для Unix и Linux можно использовать gettimeofday.

Для Win32 можно использовать GetSystemTimeAsFileTime, а затем конвертировать его в time_t + миллисекунды.

.
4
ответ дан 29 November 2019 в 06:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: