Там какой-либо путь состоит в том, чтобы получить миллисекунды и его дробную часть с 1970 с помощью time.h на языке C?
Unix-время или Posix time - время в секундах с той эпохи, о которой вы говорили. Ответ
bzabhi верен: Вы просто умножаете Unix-время на 1000, чтобы получить миллисекунды.
Помните, что все значения миллисекунд, возвращаемые по Unix-время, будут умножены на 1000 (как 12345678000). Разрешение по-прежнему составляет всего 1 секунду.
Невозможно получить дробную часть
Комментарий Павла также верен. Штемпель времени в Unix не учитывает прыжковые секунды. Это делает еще менее разумным полагаться на преобразование в миллисекунды
. Это не стандартный C, но gettimeofday()
присутствует как в SysV, так и в BSD производных системах, и находится в POSIX. Она возвращает время с эпохи в структурированной таймeval
:
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
Если вам нужно разрешение в миллисекундах, вы можете использовать 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;
Для Unix и Linux можно использовать gettimeofday.
Для Win32 можно использовать GetSystemTimeAsFileTime, а затем конвертировать его в time_t + миллисекунды.
.