2015-01-23 5 views
-3

У меня проблема с преобразованием time_t в struct timeval. Мне нужно значение tv_usec & tv_sec, которое должно быть заселено из значения time_t.Преобразование time_t в timeval

Для заполнения tv_sec и tv_usec нам необходимо позвонить по телефону gettimeofday(). Но я не хочу называть эту функцию, так как у меня есть время в time_t. Из time_t я хочу извлечь/преобразовать в миллисекунды. Начиная с существующего кода они используют struct timeval для заполнения.

Если бы вы могли предложить, как получить миллисекунду от time_t было бы здорово.

Любая помощь по этому вопросу была бы действительно оценена. Спасибо заранее.

+2

Ваш вопрос не очень ясен (или очень не ясен). Добавьте свой код, если вы действительно хотите получить помощь. –

+0

Где проблема? 'time_t' находится в секундах,' timeval' - это 'struct', который включает также микросекунды (поэтому достаточно простого нажатия на' int_32' для 'tv_sec'). Между ними нет никакой проблемы с компенсацией (1/1/1970), поэтому она должна быть простой. В чем твоя проблема, ** точно **? –

ответ

3

Определение struct timeval<sys/time.h>):

struct timeval 
{ 
    time_t  tv_sec;  /* seconds */ 
    suseconds_t tv_usec; /* microseconds */ 
}; 

И как вы можете видеть, time_t может содержать только секунд, вы не можете получить миллисекунды от time_t. Если вы действительно хотите работать с объектом timeval, вы можете просто определить объект timeval и вручную добавить к нему переменную time_t. то есть

time_t time_here; //Your time_t variable. 
timeval time_now; //Your timeval object. 
time_now.tv_sec = time_here; //Assign time_here to this object. 
time_now.tv_usec = 0; //As time_t can hold only seconds. 
Смежные вопросы