Convertir timeval a time_t

¿Cómo convierto timeval a time_t? Estoy tratando de convertir: umtp-> ut_tv a time_t para poder usar un difftime (a, b).

struct { int32_t tv_sec; /* Seconds */ int32_t tv_usec; /* Microseconds */ } ut_tv; /* Time entry was made */ struct timeval ut_tv; /* Time entry was made */ 

time_t solo almacena segundos, entonces

  time_t time = (time_t)ut_tv.tv_sec; 

Debería funcionar, pero como solo estás buscando una diferencia, siempre existe la magia de la resta .

 struct timeval diff = {a.tv_sec-b.tv_sec, a.tv_usec-b.tv_usec}; 

Esto te permite mantener toda la precisión que tenías antes.

Sin usar c-cast, simplemente puedes hacer esto:

 struct timeval rawtime_s_us; gettimeofday( &rawtime_s_us, NULL ); time_t rawtime_s = rawtime_s_us.tv_sec;