将timeval转换为time_t

时间:2012-02-12 21:30:18

标签: c

如何将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 */

2 个答案:

答案 0 :(得分:9)

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};

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

答案 1 :(得分:2)

不使用c-cast,您只需执行此操作:

struct timeval rawtime_s_us;
gettimeofday( &rawtime_s_us, NULL );
time_t rawtime_s = rawtime_s_us.tv_sec;
相关问题