将timeval转换为time_t

如何将timeval转换为time_t? 我试图将:umtp-> ut_tv转换为time_t所以我可以使用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只存储秒数,所以

  time_t time = (time_t)ut_tv.tv_sec; 

应该工作,但既然你只是在寻找差异,那么总有减法的魔力。

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

这使您可以保持以前的所有精度。

不使用c-cast,您可以简单地执行此操作:

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